{"swagger":"2.0","basePath":"/api/v2","consumes":["application/json"],"produces":["application/json","text/plain","text/plain"],"paths":{"/settings/ai/llm":{"x-swagger-router-controller":"settings.ai.controller.v2","x-permission-type":"admins-only","get":{"deprecated":true,"operationId":"getAiSettings","summary":"Returns ai configuration settings","tags":["settings"],"responses":{"200":{"description":"Ai configuration settings.","schema":{"type":"object","required":["llmServices","llmTerms"],"properties":{"llmServices":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If llm is enabled."}}},"llmTerms":{"type":"object","properties":{"accepted":{"type":"boolean","description":"If llm terms are accepted."}}},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"nlqV3Enabled":{"type":"boolean","description":"If AI Assistant Nlq V3 is enabled."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behaviour on Dashboards"}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"quotaNotification":{"type":"boolean","description":"If Quota Notification is enabled."},"provider":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}}},"400":{"description":"Ai settings are empty","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}},"403":{"description":"User does not have permission"},"404":{"description":"Name not found","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]},"post":{"deprecated":true,"operationId":"setAiSettings","summary":"Updates ai settings","tags":["settings"],"responses":{"200":{"description":"Ai configuration settings.","schema":{"type":"object","required":["llmServices","llmTerms"],"properties":{"llmServices":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If llm is enabled."}}},"llmTerms":{"type":"object","properties":{"accepted":{"type":"boolean","description":"If llm terms are accepted."}}},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"nlqV3Enabled":{"type":"boolean","description":"If AI Assistant Nlq V3 is enabled."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behaviour on Dashboards"}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"quotaNotification":{"type":"boolean","description":"If Quota Notification is enabled."},"provider":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}}},"400":{"description":"Invalid input","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}},"403":{"description":"User does not have permission"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Object with the ai settings.","name":"ai","required":true,"schema":{"allOf":[{"type":"object","required":["llmServices","llmTerms"],"properties":{"llmServices":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If llm is enabled."}}},"llmTerms":{"type":"object","properties":{"accepted":{"type":"boolean","description":"If llm terms are accepted."}}},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"nlqV3Enabled":{"type":"boolean","description":"If AI Assistant Nlq V3 is enabled."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behaviour on Dashboards"}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"quotaNotification":{"type":"boolean","description":"If Quota Notification is enabled."},"provider":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}},{"type":"object","properties":{"apiKey":{"type":"string"}}}]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/datamodel-imports/schema":{"post":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/import_schema/client","tags":["Datamodel Imports/Exports"],"summary":"Import a Datamodel Schema","description":"Import a Datamodel Schema.\nThis endpoint allows you to specify a Datamodel ID via the `datamodelId` query parameter. If provided, that Datamodel's schema will be overriden. In this case, the Datamodel title will be ignored.\n Otherwise, a new Datamodel will be created. The field `newTitle` can be used to explicitly name the new Datamodel.\n If both `datamodelId` and `newTitle` are provided, the `newTitle` field will be ignored.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"datamodelId","in":"query","description":"ID of the Datamodel to import. \nIf not specified, a new datamodel will be created\nIf specified, the Datamodel title will be ignored.","required":false,"type":"string"},{"name":"newTitle","in":"query","type":"string","required":false,"description":"When a `datamodelId` is not provided to create a new Datamodel, this property can be used to give the new Datamodel a specific title.\nIf `datamodelId` is provided together with `newTitle`,  the `newTitle` field will be ignored."},{"name":"mergeMode","in":"query","description":"Apply a single merge behavior for all imported dependencies. If omitted, defaults to mergeNew.\n Please Note: Perspectives and AiAcessControl performs overWrite behavior","required":false,"type":"string","enum":["skip","mergeNew","mergeOld","overwrite"]},{"name":"Body","in":"body","description":"Datamodel schema object","required":true,"schema":{"$ref":"#/definitions/ElasticubeImportInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"import result"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels":{"post":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/add","tags":["Datamodels"],"summary":"Create Datamodel","description":"Create a new Datamodel.\n\nDatamodels are created with a blank schema in `draft` state and must be built/published before they can be used in dashboards.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"body","in":"body","description":"New Datamodel Schema object","required":false,"schema":{"$ref":"#/definitions/DatamodelSchemaInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The new Datamodel","schema":{"$ref":"#/definitions/DatamodelSchemaOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/clones":{"post":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/add","tags":["Datamodels"],"summary":"Clone Datamodel","description":"This API is provided for early access, and may change.<br><br>Duplicate Datamodel by DatamodelId","consumes":["application/json"],"produces":["application/json"],"parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"name":"body","in":"body","required":true,"schema":{"type":"object","properties":{"title":{"type":"string","description":"The title to give the duplicated Datamodel"}},"required":["title"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"Duplicate succeeded"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodel-exports/schema":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/export_schema/client","summary":"Export Datamodel Schema","description":"Export a Datamodel Schema. This endpoint requires a Datamodel ID via the datamodelId query parameter - not providing the ID will result in an error. An export type is also required via the type query parameter, defining which version of the Datamodel Schema to export.","tags":["Datamodel Imports/Exports"],"produces":"application/json","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"datamodelId","in":"query","description":"A Datamodel ID.","required":true,"type":"string"},{"name":"type","in":"query","type":"string","required":true,"enum":["schema-latest"],"description":"Which Datamodel Schema to export"},{"name":"dependenciesIdsToInclude","in":"query","type":"array","items":{"type":"string","enum":["drillHierarchies","dataContext","formulaManagement"]},"required":false,"description":"Which Dependencies Ids To Include in the export file"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"export datamodel schema"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodel-exports/dependenciesList":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/export_schema/client","summary":"Get Export Datamodel dependencies","description":"Export a Datamodel dependencies.","tags":["Datamodel Imports/Exports"],"produces":"application/json","parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"export datamodel dependencies"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodel-import/dependenciesMergeOptions":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/export_schema/client","summary":"Get import Datamodel dependencies Merge Options","description":"Get import Datamodel dependencies Merge Options.","tags":["Datamodel Imports/Exports"],"produces":"application/json","parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Get import Datamodel dependencies Merge Options"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}":{"delete":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/remove","tags":["Datamodels"],"summary":"Delete Datamodel","description":"Delete a specific Datamodel by its ID\n\nThe Datamodel will be deleted entirely, including its Schema, running instance, and any stored data.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"$ref":"#/responses/Standard200HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/instances":{"get":{"x-is-new-architecture":true,"x-hide":false,"tags":["Datamodels"],"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","summary":"List Datamodel instances","description":"Get an array of physical instances of the Datamodel by ID.","parameters":[{"$ref":"#/parameters/DatamodelId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Datamodel physical instances","schema":{"$ref":"#/definitions/DatamodelInstance"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"description":"The given Data Model does not exists","$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"Get Datamodel schema by ID","description":"Get a single Datamodel's schema by ID.\n\nThe response of this endpoint represents the **current** state of the schema as can be seen in the Data page,\nand may differ from the schema available to queries if changes have been made since the last build/publish.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The requested Datamodel Schema","schema":{"$ref":"#/definitions/DatamodelSchemaOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/datasets":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"List Datasets","description":"Get an array of all of a Datamodel's Datasets.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/Fields"},{"$ref":"#/parameters/Sort"},{"$ref":"#/parameters/Limit"},{"$ref":"#/parameters/Skip"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Datasets","schema":{"type":"array","items":{"$ref":"#/definitions/DatasetOutput"}}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Create Dataset","description":"This API is provided for early access, and may change.<br><br>Create a new Dataset within a Datamodel Schema.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"name":"body","in":"body","description":"New Dataset object","required":true,"schema":{"$ref":"#/definitions/DatasetInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The new Dataset","schema":{"$ref":"#/definitions/DatasetOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/datasets/{datasetId}":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"Get Dataset by ID","description":"Get a specific Dataset from a specific Datamodel Schema by their respective IDs.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The requested Dataset","schema":{"$ref":"#/definitions/DatasetOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"patch":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Update Dataset","description":"This API is provided for early access, and may change.<br><br>Update a Dataset by ID.\n\nOnly the `connection` property can be updated.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"name":"body","in":"body","description":"Dataset object with `connection` to update to","required":true,"schema":{"$ref":"#/definitions/DatasetUpdate"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The updated Dataset","schema":{"$ref":"#/definitions/DatasetOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Delete Dataset","description":"This API is provided for early access, and may change.<br><br>Delete a Dataset from a Datamodel Schema by ID","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"$ref":"#/responses/Standard200HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/datasets/{datasetId}/tables":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"List Tables","description":"Get an array of Tables from a Dataset.\n\nResults can be filtered using the optional `name` query parameter.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"name":"name","in":"query","description":"Table name to filter by","required":false,"type":"string"},{"$ref":"#/parameters/Fields"},{"$ref":"#/parameters/Sort"},{"$ref":"#/parameters/Limit"},{"$ref":"#/parameters/Skip"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Tables","schema":{"type":"array","items":{"$ref":"#/definitions/TableOutput"}}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Create Table","description":"Create a new Table within a Dataset.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"name":"body","in":"body","description":"A new Table object","required":true,"schema":{"$ref":"#/definitions/TableInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The new Table","schema":{"$ref":"#/definitions/TableOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/datasets/{datasetId}/tables/{tableId}":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"Get Table by ID","description":"Get a specific Table from the Dataset by ID.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"$ref":"#/parameters/TableId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The requested Table","schema":{"$ref":"#/definitions/TableOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"patch":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Update Table","description":"Update a Table in the Dataset by ID.\n\nThis operation also updates the Table's Columns - **note** that all desired columns should be provided, including existing ones that should be kept.\nAny existing Columns omitted from the payload will be removed from the Table!","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"$ref":"#/parameters/TableId"},{"name":"body","in":"body","description":"A Table object with Columns","required":true,"schema":{"$ref":"#/definitions/TableInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The updated Table","schema":{"$ref":"#/definitions/TableOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Delete Table","description":"Delete a Table from the Dataset by ID.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"$ref":"#/parameters/TableId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"$ref":"#/responses/Standard200HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/relations":{"x-is-new-architecture":true,"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"List Relations","description":"Get an array of Relations within the Datamodel Schema.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/Fields"},{"$ref":"#/parameters/Sort"},{"$ref":"#/parameters/Limit"},{"$ref":"#/parameters/Skip"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Relations","schema":{"type":"array","items":{"$ref":"#/definitions/RelationOutput"}}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Create Relation","description":"Create a new Relation within a Datamodel Schema.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"name":"body","in":"body","description":"A new Relation object","required":true,"schema":{"$ref":"#/definitions/RelationInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The new Relation","schema":{"$ref":"#/definitions/RelationOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/relations/{relationId}":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"Get Relation by ID","description":"Get a specific Relation from the Datamodel Schema by ID.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/RelationId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The requested Relation","schema":{"$ref":"#/definitions/RelationOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"patch":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Update Relation","description":"Update a specific Relation in the Datamodel Schema by ID.\n\n**Note** that all desired columns must be included in the `columns` property, including existing ones that should be kept.\nAny existing columns omitted from the payload will be removed from the relation.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/RelationId"},{"name":"body","in":"body","description":"An updated Relation object","required":true,"schema":{"$ref":"#/definitions/RelationInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The updated Relation","schema":{"$ref":"#/definitions/RelationOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Delete Relation","description":"Delete a specific Relation from the Datamodel Schema by ID.\n\nThis operation deletes the entire Relation - to remove one or more columns from a relation, use the `PATCH` endpoint.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/RelationId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"$ref":"#/responses/Standard200HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/schema":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"List Datamodel schemas","description":"Get an array of all Datamodel schemas.","consumes":["application/json"],"produces":["application/json"],"parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"title","in":"query","description":"Datamodel Title to search for","required":false,"type":"string"},{"$ref":"#/parameters/Fields"},{"$ref":"#/parameters/Sort"},{"$ref":"#/parameters/Limit"},{"$ref":"#/parameters/Skip"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Datamodels"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/schema/datasets/{datasetId}/table-schema":{"get":{"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Datamodels"],"summary":"Get table schema metadata","description":"Return table schema metadata from data source","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/DatamodelId"},{"$ref":"#/parameters/DatasetId"},{"name":"table","in":"query","description":"table name","required":true,"type":"string"},{"name":"schema","in":"query","description":"schema of table","required":false,"type":"string"},{"name":"relations","in":"query","description":"relation of table","required":false,"default":false,"type":"boolean"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"table schema","schema":{"$ref":"#/definitions/TableSchema"}},"400":{"$ref":"#/responses/Standard400HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"}}}},"/builds":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/get_tasks","tags":["Builds"],"summary":"List Build tasks","description":"Get an array of Datamodel Build Processes.\n\nThe results can be filtered using the `datamodelId` and `status` query parameters.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"datamodelId","in":"query","description":"ID of Datamodel to filter results by","required":false,"type":"string"},{"name":"status","in":"query","description":"Build status to filter results by","required":false,"type":"string","enum":["pending","building","done","failed","cancelled"]},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"An array of Build Tasks","schema":{"type":"array","items":{"$ref":"#/definitions/BuildOutput"}}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/execute_build","tags":["Builds"],"summary":"Start a build or publish","description":"Create a Build Task to start building a Datamodel or publish a live Datamodel.\n\nThe endpoint will return a response as soon as the task is created, **not** when the build is done.\n\n Use the ID returned in this endpoint's response to query for progress using the equivalent `GET` method.\n\n**For `extract` type models**, use one of the following `buildType` values:\n\n  -- `schema_changes` to build only changes to the schema\n\n  -- `by_table` to build each table according to its configuration (such as accumulative builds)\n\n  -- `full` to built the entire model from scratch\n\nYou can also determine which version of the schema is used via the `schemaOrigin` parameter:\n\n  -- `latest` will build the Datamodel as seen in the Data page, including all changes to it since the last build _(default)\n\n  -- `running` will build the last succesfully built schema - use this to avoid exposing incomplete changes to the schema\n\n**For `live` type models**, use the value `publish` in the `buildType` parameter. The `schemaOrigin` parameter is irrelevant.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"body","in":"body","description":"Parameters for build task","required":true,"schema":{"$ref":"#/definitions/BuildInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The new Build task","schema":{"$ref":"#/definitions/BuildOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/execute_build","tags":["Builds"],"summary":"Cancel/Stop Datamodel builds","description":"Cancel (stop) all running build tasks for a specific Datamodel.\n\nThis endpoint requires a Datamodel ID to be provided as the query parameter `datamodelId`.\n\nExecuting this endpoint without a valid Datamodel ID will result in an error response - it is not possible to cancel all running builds system-wide.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/QueryDatamodelId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"204":{"$ref":"#/responses/Standard204HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/perspectives":{"get":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Perspectives"],"summary":"List Perspectives","description":"Get an array of All Perspectives.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/ParentOid"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The list of datamodel perspectives","schema":{"$ref":"#/definitions/DatamodelPerspectiveOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Perspectives"],"summary":"Add new Perspective","description":"Create a new perspective from a datamodel.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"body","in":"body","description":"A new perspective object","required":true,"schema":{"$ref":"#/definitions/DatamodelPerspectiveInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"The perspective was created and added successfully.","schema":{"$ref":"#/definitions/DatamodelPerspectiveOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/perspectives/{perspectiveId}/publish-semantics":{"post":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/execute_build","tags":["Perspectives"],"summary":"Publish semantic properties for a perspective","description":"Publish semantic properties for the specified perspective. If the specified perspective is the default perspective, all perspectives under the same datamodel will be published.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/PerspectiveId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Publish operation result","schema":{"$ref":"#/definitions/PublishSemanticPropertiesOutput"}},"400":{"$ref":"#/responses/Standard400HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/perspectives/{perspectiveId}":{"get":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","tags":["Perspectives"],"summary":"Get Perspective by Oid","description":"Get a specific perspective within the Datamodel.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/PerspectiveId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The perspective correspond to the supplied Oid","schema":{"$ref":"#/definitions/DatamodelPerspectiveOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"patch":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Perspectives"],"summary":"update a specific perspective","description":"Update a perspective from a datamodel.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/PerspectiveId"},{"name":"body","in":"body","description":"An updated perspective object","required":true,"schema":{"$ref":"#/definitions/DatamodelPerspectiveUpdateInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The perspective was updated successfully.","schema":{"$ref":"#/definitions/DatamodelPerspectiveOutput"}},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-hide":false,"x-is-new-architecture":true,"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Perspectives"],"summary":"Remove a specific perspective","description":"Remove a perspective from a datamodel.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"$ref":"#/parameters/PerspectiveId"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The perspective was deleted successfully."},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/{datamodelId}/validate_dimensional_model":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","summary":"Validate perspective","description":"Validate perspective for dimensional modeling compliance.","tags":["Dimensional Modeling"],"produces":"application/json","parameters":[{"$ref":"#/parameters/Auth"},{"name":"datamodelId","in":"query","description":"A Datamodel ID (can be perspectiveId as well).","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Provides the validation status (valid: true/false) and, in the case of valid==false, includes extra details."},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/ai/recommendations/{datamodelId}/table-relations":{"get":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","summary":"Return the status for Table relations recommendation","description":"Get the auto-generated relationship suggestions for a given data model or perspective. The relationship suggestions are the results of a process aided by AI, which helps determine which fields across tables are related to each other.","tags":["AI"],"produces":"application/json","parameters":[{"$ref":"#/parameters/Auth"},{"name":"datamodelId","in":"query","description":"A Datamodel ID (can be perspectiveId as well).","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Provides the validation status (valid: true/false) and, in the case of valid==false, includes extra details."},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"post":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","summary":"Activate Table relations recommendation","description":"Start the process of automatically creating relationship suggestions between tables for a given data model or perspective. The auto-suggestion of relationships is aided by AI, which helps determine which fields across tables are related to each other.","tags":["AI"],"produces":"application/json","parameters":[{"$ref":"#/parameters/Auth"},{"name":"datamodelId","in":"query","description":"A Datamodel ID (can be perspectiveId as well).","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Provides the validation status (valid: true/false) and, in the case of valid==false, includes extra details."},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}},"delete":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/get","summary":"Delete the status for Table relations recommendation","description":"Delete the status for Table relations recommendation","tags":[],"produces":"application/json","parameters":[{"$ref":"#/parameters/Auth"},{"name":"datamodelId","in":"query","description":"A Datamodel ID (can be perspectiveId as well).","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Provides the validation status (valid: true/false) and, in the case of valid==false, includes extra details."},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"},"503":{"$ref":"#/responses/Standard503HttpResponse"}}}},"/datamodels/ai-access-control-settings":{"get":{"x-permission-type":"authenticate","tags":["Datamodels"],"summary":"Get AI Assistant Settings","description":"Retrieve AI assistant settings for one or more datamodels or perspectives.\n\nUsage rules:\n- For a single item, provide either `oid` **or** `title` (not both).\n- For multiple items, provide `oid` as a comma-separated list of OIDs, or `title` as a comma-separated list of titles.\n- Do not mix oid-based and title-based parameters in the same request.\n- Prefer using oid(s) where possible.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"oid","in":"query","description":"OID of a single datamodel or perspective, or a comma-separated list of OIDs for batch retrieval","required":false,"type":"string"},{"name":"title","in":"query","description":"Title of a single datamodel or perspective, or a comma-separated list of titles for batch retrieval","required":false,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"AI assistant settings retrieved successfully.\n\n- Single input: returns the `aiAccessControlSettings` object (three boolean properties).\n- Multiple inputs: returns an array of objects, each containing `oid` or `title` plus `aiAccessControlSettings`.\n\nNote: Schema represents single input format. Multiple inputs return an array where each item follows this structure.","schema":{"type":"object","properties":{"availableForAnalyticsAssistant":{"type":"boolean"},"availableForStudioAssistant":{"type":"boolean"},"availableForSemanticEnrichment":{"type":"boolean"}},"required":["availableForAnalyticsAssistant","availableForStudioAssistant","availableForSemanticEnrichment"]},"examples":{"application/json":{"singleExample":{"availableForAnalyticsAssistant":true,"availableForStudioAssistant":false,"availableForSemanticEnrichment":true},"multipleExampleWithOids":[{"oid":"e4f03cce-5862-4da7-933f-5501eb7cbec2","aiAccessControlSettings":{"availableForAnalyticsAssistant":true,"availableForStudioAssistant":false,"availableForSemanticEnrichment":true}},{"oid":"77403881-1f2b-46f1-ab19-2092bef988a4","aiAccessControlSettings":{"availableForAnalyticsAssistant":false,"availableForStudioAssistant":true,"availableForSemanticEnrichment":false}}],"multipleExampleWithTitles":[{"title":"My Datamodel","aiAccessControlSettings":{"availableForAnalyticsAssistant":true,"availableForStudioAssistant":false,"availableForSemanticEnrichment":true}},{"title":"Another Datamodel","aiAccessControlSettings":{"availableForAnalyticsAssistant":false,"availableForStudioAssistant":true,"availableForSemanticEnrichment":false}}]}}},"400":{"$ref":"#/responses/Standard400HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"}}},"patch":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Update AI Assistant Settings","description":"Update AI assistant settings for a single datamodel or perspective. Either `oid` or `title` must be provided as a query parameter, but not both. Prefer using `oid`.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"oid","in":"query","description":"OID of the datamodel","required":false,"type":"string"},{"name":"title","in":"query","description":"Title of the datamodel","required":false,"type":"string"},{"name":"body","in":"body","description":"AI Assistant settings","required":true,"schema":{"$ref":"#/definitions/AiAccessControlSettingsInput"}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"AI assistant settings updated successfully","schema":{"$ref":"#/definitions/AiAccessControlSettingsResponse"}},"400":{"$ref":"#/responses/Standard400HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"}}},"delete":{"x-permission-type":"general","x-permission-path":"manage/elasticubes/modify","tags":["Datamodels"],"summary":"Delete AI Assistant Settings","description":"Delete AI assistant settings for a single datamodel or perspective. Either `oid` or `title` must be provided as a query parameter, but not both. Prefer using `oid`.","parameters":[{"$ref":"#/parameters/Auth"},{"$ref":"#/parameters/x-device-id"},{"name":"oid","in":"query","description":"OID of the datamodel","required":false,"type":"string"},{"name":"title","in":"query","description":"Title of the datamodel","required":false,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"AI assistant settings deleted successfully","schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the deletion was successful"},"message":{"type":"string","description":"Success message"}}}},"400":{"$ref":"#/responses/Standard400HttpResponse"},"401":{"$ref":"#/responses/Standard401HttpResponse"},"403":{"description":"User does not have permission"},"404":{"$ref":"#/responses/Standard404HttpResponse"},"500":{"$ref":"#/responses/Standard500HttpResponse"}}}},"/projects":{"x-swagger-router-controller":"projects.controller.v2","get":{"x-hide":false,"operationId":"listProjects","x-permission-type":"designers-and-admins-only","x-system-tenant":true,"tags":["projects"],"summary":"Retrieves Git projects accessible by the current user.","description":"The returned projects list can be filtered by optional query parameters. Providing additional optional query parameters will result in more returned data.","parameters":[{"name":"current_branch_name","in":"query","required":false,"type":"boolean","description":"If true, the current Git branch name of each project's local Git repository is included in the response."},{"name":"favorites_only","in":"query","required":false,"type":"boolean","description":"If true, only projects favorited by the current user are included in the response."},{"name":"last_commit_message","in":"query","required":false,"type":"boolean","description":"If true, the last commit message of each project's local Git repository is included in the response."},{"name":"last_commit_date","in":"query","required":false,"type":"boolean","description":"If true, the commit date timestamp of the last commit in each project's local Git repository is included in the response."},{"name":"owner_id","in":"query","required":false,"type":"boolean","description":"If true, the ID of the user who created each project is included in the response."},{"name":"detached_head_hash","in":"query","required":false,"type":"boolean","description":"If true, returns the hash of the current commit if on detached head mode."},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Git projects accessible by the current user.","schema":{"type":"array","items":{"description":"A project with additional Git information. Typically used for rendering a list of projects.","allOf":[{"type":"object","description":"A Git project.","properties":{"name":{"type":"string","description":"Name of the project.","example":"Marketing_Project"},"remoteUrl":{"type":"string","description":"HTTP(S) URL of the remote Git repository connected to this project's local Git repository.","example":"https://github.com/your-company/marketing-project.git"},"oid":{"type":"string","description":"Unique identifier for this project.","example":"630581af4b046d0011cdec49"},"owner":{"type":"string","description":"Username of the person who created this project.","example":"someone@example.com"},"created":{"type":"string","description":"Timestamp of when this project was created.","example":"2022-01-01 01:23:45.678Z"},"lastModified":{"type":"string","description":"Timestamp of when this project was last modified.","example":"2022-02-15 01:23:45.678Z"},"syncedAt":{"type":"string","description":"Timestamp of when the assets of this project were synchronized.\n\nThis timestamp is updated when assets are written to files in the Git repository. This timestamp is also updated when files of assets in the Git repository are read and imported into Sisense.","example":"2022-02-15 01:23:45.678Z"},"shares":{"type":"array","description":"Groups and users that this project is shared with. Shared groups and users have full write access to this project, and can add or delete assets.","items":{"type":"object","properties":{"partyId":{"type":"string","description":"A user ID or group ID.","example":"62fed3a6f55cec001b9fdb51"},"type":{"type":"string","description":"Whether this share is gives project access to a user or group.","enum":["user","group"]},"pendingAdminApprovalAt":{"type":"string","description":"A timestamp of when this pending project share was automatically created.\n\nThe existence of this field indicates that access to this project should be shared with a user, but an admin user must approve that share before the user receives access.\n\nWhen a pull results in files being merged from assets owned by users who did not have access to this project previously, a pending project share is automatically created for each of those users.\n\nThose users will not be able to access the project until an admin approves the pending share.\n\nIf the pending project share is rejected by an admin user, the rejected user will not receive access to the project, and the assets owned by the rejected user will also be removed from the project.","example":"2022-02-15 01:23:45.678Z"}},"required":["partyId","type"]}},"userFavorites":{"type":"array","description":"An array of IDs of users who have marked this project as a favorite.","items":{"type":"string","description":"A user ID.","example":"62fed3a6f55cec001b9fdb50"}}},"required":["name","oid","owner","created","lastModified","syncedAt","shares","userFavorites"]},{"type":"object","properties":{"currentBranchName":{"type":"string","description":"Name of the current branch that is checked out in the local Git repository of this project.","example":"master"},"lastCommitDate":{"type":"string","description":"Timestamp of the last commit in the local Git repository of this project.","example":"2022-02-15 01:23:45.678Z"},"lastCommitMessage":{"type":"string","description":"Subject line and body of the last commit in the local Git repository of this project.","example":"refactor(layout): Resize bar charts\nThese changes increase the width of bar charts on a marketing dashboard."},"ownerId":{"type":"string","description":"ID of the user who created this project.","example":"62fed3f432c914002525dc8c"},"detachedHeadHash":{"type":"string","description":"The commit hash for the current HEAD if the project is in a detached HEAD state.","example":"62fed3f432c914002525dc8c"}}}],"example":{"name":"Marketing_Project","remoteUrl":"https://github.com/your-company/marketing-project.git","oid":"630581af4b046d0011cdec49","owner":"someone@example.com","created":"2022-01-01 01:23:45.678Z","lastModified":"2022-02-15 01:23:45.678Z","syncedAt":"2022-02-15 01:23:45.678Z","shares":[{"partyId":"62fed3a6f55cec001b9fdb51","type":"user"},{"partyId":"630d0c86817306001c87b9cc","type":"group"}],"userFavorites":["62fed3a6f55cec001b9fdb50"],"detachedHeadHash":["62fed3f432c914002525dc8c"]}}}},"403":{"description":"User does not have permission"},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"}],"get":{"x-hide":false,"operationId":"getProject","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves a Git project.","description":"Retrieves a Git project. Providing additional optional query parameters will result in more returned data.","parameters":[{"name":"branch_mappings","in":"query","required":false,"type":"boolean","description":"If true, an array of all local Git branches and remote-tracking branches is included in the response."},{"name":"commits","in":"query","required":false,"type":"boolean","description":"If true, an array of all local Git commits is included in the response."},{"name":"current_branch_name","in":"query","required":false,"type":"boolean","description":"If true, the current Git branch name is included in the response."},{"name":"owner_id","in":"query","required":false,"type":"boolean","description":"If true, the ID of the user who created the project is included in the response."},{"name":"tag_names","in":"query","required":false,"type":"boolean","description":"If true, an array of all local Git tag names is included in the response."},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The requested project.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"description":"A project with additional Git information. Typically used for rendering a project UI.","allOf":[{"type":"object","description":"A Git project.","properties":{"name":{"type":"string","description":"Name of the project.","example":"Marketing_Project"},"remoteUrl":{"type":"string","description":"HTTP(S) URL of the remote Git repository connected to this project's local Git repository.","example":"https://github.com/your-company/marketing-project.git"},"oid":{"type":"string","description":"Unique identifier for this project.","example":"630581af4b046d0011cdec49"},"owner":{"type":"string","description":"Username of the person who created this project.","example":"someone@example.com"},"created":{"type":"string","description":"Timestamp of when this project was created.","example":"2022-01-01 01:23:45.678Z"},"lastModified":{"type":"string","description":"Timestamp of when this project was last modified.","example":"2022-02-15 01:23:45.678Z"},"syncedAt":{"type":"string","description":"Timestamp of when the assets of this project were synchronized.\n\nThis timestamp is updated when assets are written to files in the Git repository. This timestamp is also updated when files of assets in the Git repository are read and imported into Sisense.","example":"2022-02-15 01:23:45.678Z"},"shares":{"type":"array","description":"Groups and users that this project is shared with. Shared groups and users have full write access to this project, and can add or delete assets.","items":{"type":"object","properties":{"partyId":{"type":"string","description":"A user ID or group ID.","example":"62fed3a6f55cec001b9fdb51"},"type":{"type":"string","description":"Whether this share is gives project access to a user or group.","enum":["user","group"]},"pendingAdminApprovalAt":{"type":"string","description":"A timestamp of when this pending project share was automatically created.\n\nThe existence of this field indicates that access to this project should be shared with a user, but an admin user must approve that share before the user receives access.\n\nWhen a pull results in files being merged from assets owned by users who did not have access to this project previously, a pending project share is automatically created for each of those users.\n\nThose users will not be able to access the project until an admin approves the pending share.\n\nIf the pending project share is rejected by an admin user, the rejected user will not receive access to the project, and the assets owned by the rejected user will also be removed from the project.","example":"2022-02-15 01:23:45.678Z"}},"required":["partyId","type"]}},"userFavorites":{"type":"array","description":"An array of IDs of users who have marked this project as a favorite.","items":{"type":"string","description":"A user ID.","example":"62fed3a6f55cec001b9fdb50"}}},"required":["name","oid","owner","created","lastModified","syncedAt","shares","userFavorites"]},{"type":"object","properties":{"branchMappings":{"type":"array","description":"Array of all branches and remote-tracking branches in the local Git repository.","items":{"type":"object","description":"A mapping between a local branch and a remote-tracking branch in the local Git repository of this project.","properties":{"local":{"type":"string","description":"Name of a local branch.","example":"master"},"remote":{"type":"string","description":"Name of the remote-tracking branch associated with the local branch.","example":"origin/master"}}}},"commits":{"type":"array","description":"An array of all commits in the local Git repository.","items":{"type":"object","properties":{"hash":{"type":"string","description":"Commit hash.","example":"2d83e5fee94476797fe145a58829ca3d73aec60f"},"authorName":{"type":"string","description":"Author name (respecting `.mailmap`).","example":"Mary Smith"},"authorEmail":{"type":"string","description":"Author email (respecting `.mailmap`).","example":"mary@example.com"},"date":{"type":"string","description":"Author date timestamp.","example":"2020-05-01T01:23:45.000Z"},"remoteOnly":{"type":"boolean","description":"Indicating if a commit exists only remotely","example":true},"parents":{"type":"array","description":"Commit hashes of the parent commits of this commit.","items":{"type":"string","description":"Parent commit hash."}},"refs":{"type":"array","description":"Array of ref names.","items":{"type":"string","description":"Ref name.","example":"HEAD -> master"}},"message":{"type":"string","description":"Subject line and body of this commit's message.","example":"refactor(layout): Resize bar chart\n\nThis commit's changes increase the width of a bar chart on a marketing dashboard."}},"required":["hash","authorName","authorEmail","date","parents","refs","message"]}},"currentBranchName":{"type":"string","description":"Name of the current branch that is checked out in the local Git repository. If the local Git repository is in detached HEAD state, this is is an empty string.","example":"master"},"detachedHeadHash":{"type":"string","description":"The commit hash for the current HEAD if the project is in a detached HEAD state.","example":"62fed3f432c914002525dc8c"},"ownerId":{"type":"string","description":"ID of the user who created this project.","example":"62fed3f432c914002525dc8c"},"tagNames":{"type":"array","description":"Array of all tag names in the local Git repository.","items":{"type":"string","description":"Name of a Git tag in the local Git repository of this project."}}}}],"example":{"name":"Marketing_Project","remoteUrl":"https://github.com/your-company/marketing-project.git","oid":"630581af4b046d0011cdec49","owner":"someone@example.com","created":"2022-01-01 01:23:45.678Z","lastModified":"2022-02-15 01:23:45.678Z","syncedAt":"2022-02-15 01:23:45.678Z","shares":[{"partyId":"62fed3a6f55cec001b9fdb51","type":"user"},{"partyId":"630d0c86817306001c87b9cc","type":"group"}],"userFavorites":["62fed3a6f55cec001b9fdb50"],"detachedHeadHash":["62fed3f432c914002525dc8c"]}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/branches":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"}],"get":{"x-hide":false,"operationId":"listProjectBranches","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves all Git branches of project.","description":"Returns metadata of all local and remote-tracking branches in the local Git repository of a project.","responses":{"200":{"description":"All Git branches of a project.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"array","items":{"type":"object","description":"A branch in the local Git repository of this project.","properties":{"name":{"type":"string","description":"Branch name.\n\nRemote-tracking branches have names starting with `origin/`.","example":"my-feature"},"parents":{"type":"array","description":"Hashes of the parent commits of this branch's head commit.","items":{"type":"string","description":"Parent commit hash."},"example":["d44a1466a8915f16d48c7e63a918d9357fb2d0ee"]},"head":{"type":"string","description":"Hash of this branch's head commit.","example":"a7e0a8156482611070033319daa533b624699e51"}},"required":["name","parents","head"]},"example":[{"name":"master","parents":["eef10c919666e8a45490daa3c39e1928d57380db","1a7e22a0d89f962467a5e5b40d0360aa694451d5"],"head":"86653dc5b7b0e01f9869d433283d63be542ce3a5"},{"name":"my-feature","parents":["d44a1466a8915f16d48c7e63a918d9357fb2d0ee"],"head":"a7e0a8156482611070033319daa533b624699e51"},{"name":"origin/master","parents":["19951afff8e263f20756ccea61fda05ec8b5ce12"],"head":"200f2601ca2cb72314a04aea8ddf9f9071aa4953"}]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]},"post":{"x-hide":false,"operationId":"createProjectBranch","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Creates a new Git branch.","description":"Creates a new branch in the local Git repository of a project.","parameters":[{"name":"body","in":"body","required":true,"description":"Parameters of the new branch to create.","schema":{"type":"object","description":"Parameters of a new branch to create in the local Git repository of this project.","properties":{"name":{"type":"string","description":"Name of the new branch.","example":"my-feature"},"parent":{"type":"string","description":"Commit hash or commitish of the start point of the new branch. Defaults to HEAD.","example":"a7e0a8156482611070033319daa533b624699e51"}},"required":["name"]}},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"Metadata of the created branch.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","description":"A branch in the local Git repository of this project.","properties":{"name":{"type":"string","description":"Branch name.\n\nRemote-tracking branches have names starting with `origin/`.","example":"my-feature"},"parents":{"type":"array","description":"Hashes of the parent commits of this branch's head commit.","items":{"type":"string","description":"Parent commit hash."},"example":["d44a1466a8915f16d48c7e63a918d9357fb2d0ee"]},"head":{"type":"string","description":"Hash of this branch's head commit.","example":"a7e0a8156482611070033319daa533b624699e51"}},"required":["name","parents","head"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/branches/{branch}":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"branch","in":"path","description":"Branch name.","required":true,"type":"string"}],"get":{"x-hide":false,"operationId":"getProjectBranch","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves a Git branch of a project.","description":"Returns metadata about a branch in the local Git repository of a project.","responses":{"200":{"description":"Project Git branch.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","description":"A branch in the local Git repository of this project.","properties":{"name":{"type":"string","description":"Branch name.\n\nRemote-tracking branches have names starting with `origin/`.","example":"my-feature"},"parents":{"type":"array","description":"Hashes of the parent commits of this branch's head commit.","items":{"type":"string","description":"Parent commit hash."},"example":["d44a1466a8915f16d48c7e63a918d9357fb2d0ee"]},"head":{"type":"string","description":"Hash of this branch's head commit.","example":"a7e0a8156482611070033319daa533b624699e51"}},"required":["name","parents","head"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/projects/{projectId}/branches/{branch}/checkout":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"branch","in":"path","description":"Branch name.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"checkoutProjectBranch","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Switches to a branch and imports assets.","description":"Updates the index and working tree to match the specified branch, and points HEAD at the specified branch.\n\nThe files of assets in the working tree are validated before being imported into the application.\n\nIf any validation errors are detected in one or more assets during import, an error response is returned with error details about the specific assets that failed validation. The assets failing validation will not be imported. However, in this scenario, any assets that do pass validation will be imported, despite the error response.","responses":{"204":{"description":"Switching to the branch and importing assets succeeded.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"453":{"description":"Switching to the branch succeeded. However, validation errors were encountered when importing some assets. Other assets may have been imported successfully.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95516},"status":{"type":"integer","example":453},"httpMessage":{"type":"string","example":"Asset Validation Error"},"message":{"type":"string"},"validationErrors":{"type":"object","description":"A collection of JSON validation errors that were encountered when converting assets from git repo","properties":{"timestamp":{"type":"string","description":"The time when the error occurred","example":"2011-10-05T14:48:00.000Z"},"errors":{"type":"object","description":"A mapping of assetId to JSON validation errors that were encountered when converting that asset from git repo","additionalProperties":{"type":"object","description":"A mapping of an asset's subcomponent to JSON validation errors that were encountered when converting that subcomponent from git repo","additionalProperties":{"type":"array","description":"An array of JSON validation errors that were encountered when converting a subcomponent from git repo","items":{"type":"object"}}}}},"required":["timestamp","errors"]}},"required":["code","status","httpMessage","message","validationErrors"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/projects/{projectId}/commits":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"}],"get":{"x-hide":false,"operationId":"listProjectCommits","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves all Git commits of a project.","description":"Returns metadata of all commits in the local Git repository of a project.","responses":{"200":{"description":"All commits in the project.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string","description":"Commit hash.","example":"2d83e5fee94476797fe145a58829ca3d73aec60f"},"authorName":{"type":"string","description":"Author name (respecting `.mailmap`).","example":"Mary Smith"},"authorEmail":{"type":"string","description":"Author email (respecting `.mailmap`).","example":"mary@example.com"},"date":{"type":"string","description":"Author date timestamp.","example":"2020-05-01T01:23:45.000Z"},"remoteOnly":{"type":"boolean","description":"Indicating if a commit exists only remotely","example":true},"parents":{"type":"array","description":"Commit hashes of the parent commits of this commit.","items":{"type":"string","description":"Parent commit hash."}},"refs":{"type":"array","description":"Array of ref names.","items":{"type":"string","description":"Ref name.","example":"HEAD -> master"}},"message":{"type":"string","description":"Subject line and body of this commit's message.","example":"refactor(layout): Resize bar chart\n\nThis commit's changes increase the width of a bar chart on a marketing dashboard."}},"required":["hash","authorName","authorEmail","date","parents","refs","message"]}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]},"post":{"x-hide":false,"operationId":"createProjectCommit","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Creates a new Git commit.","description":"Creates a new commit in the local Git repository of a project.","parameters":[{"name":"body","in":"body","required":true,"description":"Commit message and list of files to include in the new commit.","schema":{"type":"object","properties":{"message":{"type":"string","description":"Subject line and optional body of the new commit.","example":"refactor(layout): Resize bar chart\n\nThis commit's changes increase the width of a bar chart on a marketing dashboard."},"changes":{"type":"array","description":"List of file paths that have changed.","items":{"type":"string","description":"File path, relative to the root of the repository."},"example":["dashboards/65363add391852002a17a203&nbsp;Sample - Healthcare/widgets/65363add391852002a17a204&nbsp;TOTAL PATIENTS ADMITTED/widget.json","dashboards/65363add391852002a17a203&nbsp;Sample - Healthcare/dashboard.json"]}},"required":["message","changes"]}},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"201":{"description":"Metadata of the created commit.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","properties":{"hash":{"type":"string","description":"Commit hash.","example":"2d83e5fee94476797fe145a58829ca3d73aec60f"},"authorName":{"type":"string","description":"Author name (respecting `.mailmap`).","example":"Mary Smith"},"authorEmail":{"type":"string","description":"Author email (respecting `.mailmap`).","example":"mary@example.com"},"date":{"type":"string","description":"Author date timestamp.","example":"2020-05-01T01:23:45.000Z"},"remoteOnly":{"type":"boolean","description":"Indicating if a commit exists only remotely","example":true},"parents":{"type":"array","description":"Commit hashes of the parent commits of this commit.","items":{"type":"string","description":"Parent commit hash."}},"refs":{"type":"array","description":"Array of ref names.","items":{"type":"string","description":"Ref name.","example":"HEAD -> master"}},"message":{"type":"string","description":"Subject line and body of this commit's message.","example":"refactor(layout): Resize bar chart\n\nThis commit's changes increase the width of a bar chart on a marketing dashboard."}},"required":["hash","authorName","authorEmail","date","parents","refs","message"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"512":{"description":"The action could not be completed because the Git repository is in a detached HEAD state, and this action is not allowed. Please checkout a branch and try again.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95514},"status":{"type":"integer","example":512},"httpMessage":{"type":"string","example":"Git Detached HEAD"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/commits/{commit}":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"commit","in":"path","description":"Commit hash.","required":true,"type":"string"}],"get":{"x-hide":false,"operationId":"getProjectCommit","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves a Git commit of a project.","description":"Returns metadata of a commit in the local Git repository of a project.","responses":{"200":{"description":"Metadata of the requested commit.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","properties":{"hash":{"type":"string","description":"Commit hash.","example":"2d83e5fee94476797fe145a58829ca3d73aec60f"},"authorName":{"type":"string","description":"Author name (respecting `.mailmap`).","example":"Mary Smith"},"authorEmail":{"type":"string","description":"Author email (respecting `.mailmap`).","example":"mary@example.com"},"date":{"type":"string","description":"Author date timestamp.","example":"2020-05-01T01:23:45.000Z"},"remoteOnly":{"type":"boolean","description":"Indicating if a commit exists only remotely","example":true},"parents":{"type":"array","description":"Commit hashes of the parent commits of this commit.","items":{"type":"string","description":"Parent commit hash."}},"refs":{"type":"array","description":"Array of ref names.","items":{"type":"string","description":"Ref name.","example":"HEAD -> master"}},"message":{"type":"string","description":"Subject line and body of this commit's message.","example":"refactor(layout): Resize bar chart\n\nThis commit's changes increase the width of a bar chart on a marketing dashboard."}},"required":["hash","authorName","authorEmail","date","parents","refs","message"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/projects/{projectId}/commits/{commit}/checkout":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"commit","in":"path","description":"Commit hash.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"checkoutProjectCommit","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Checks out a commit and imports assets.","description":"Updates the index and working tree to match the specified commit, and detaches the HEAD.\n\nThe files of assets in the working tree are validated before being imported into the application.\n\nIf any validation errors are detected in one or more assets during import, an error response is returned with error details about the specific assets that failed validation. The assets failing validation will not be imported. However, in this scenario, any assets that do pass validation will be imported, despite the error response.","responses":{"204":{"description":"Checking out the commit and importing assets succeeded.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"453":{"description":"Checking out the commit succeeded. However, validation errors were encountered when importing some assets. Other assets may have been imported successfully.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95516},"status":{"type":"integer","example":453},"httpMessage":{"type":"string","example":"Asset Validation Error"},"message":{"type":"string"},"validationErrors":{"type":"object","description":"A collection of JSON validation errors that were encountered when converting assets from git repo","properties":{"timestamp":{"type":"string","description":"The time when the error occurred","example":"2011-10-05T14:48:00.000Z"},"errors":{"type":"object","description":"A mapping of assetId to JSON validation errors that were encountered when converting that asset from git repo","additionalProperties":{"type":"object","description":"A mapping of an asset's subcomponent to JSON validation errors that were encountered when converting that subcomponent from git repo","additionalProperties":{"type":"array","description":"An array of JSON validation errors that were encountered when converting a subcomponent from git repo","items":{"type":"object"}}}}},"required":["timestamp","errors"]}},"required":["code","status","httpMessage","message","validationErrors"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/projects/{projectId}/fetch":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"}],"post":{"x-hide":false,"operationId":"projectGitFetch","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Runs Git fetch.","description":"Runs `git fetch` to download commits from all branches and all tags of the remote Git repository into the local Git repository of a project.\n\nRemote-tracking branches in the local repository are updated.\n\nNo commits are merged into the current branch of the local repository.","parameters":[{"name":"body","in":"body","required":false,"description":"HTTP(S) credentials of the current user for the project's remote Git repository.\n\nIf no credentials are provided in the request body, and credentials were saved previously for this user and project, then those saved credentials will be automatically reused.","schema":{"type":"object","properties":{"httpsCredentials":{"type":"object","description":"HTTP(S) credentials of the current user for accessing the remote Git repository connected to this project.\n\nIf credentials are not provided, and credentials were previously saved for the current user and this project, then those saved credentials will be used. Each user can save a different set of credentials for each project.\n\nIf credentials are not provided, and no credentials were previously saved, then an error will be returned.","properties":{"username":{"type":"string","description":"HTTP(S) username","example":"user123456"},"password":{"type":"string","description":"HTTP(S) password or Personal Access Token","example":"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"save":{"type":"boolean","description":"Whether these credentials for the current user and should be saved for automatic reuse in later remote Git actions performed by the current user in this particular project.\nEach user can save their own set of remote credentials for each project.\nOnly credentials that were successfully used with the remote repository will be saved.","example":true}},"required":["username","password"]}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"204":{"description":"Git fetch successful.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/pull":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"projectGitPull","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Pulls in remote changes.","description":"This endpoint runs the following steps:\n1. Using the `git fetch` command, commits are downloaded from one specific branch in the remote Git repository associated with the local Git repository of a project.\n\n2. After a successful fetch, the downloaded commits are merged into the current branch of the local repository using `git merge`.\n\n    If merge conflicts are detected, the merge is aborted, and no changes are imported into the application.\n\n\n3. When merging succeeds without conflicts, the files of assets in the working tree are validated before being imported into the application.\n\n    If any validation errors are detected in one or more assets during import, an error response is returned with error details about the specific assets that failed validation. The assets failing validation will not be imported. However, in this scenario, any assets that do pass validation will be imported, despite the error response.\n\n\n4. When the merged changes introduce new assets to the project, those assets are automatically added to the project.\n\n    If the merged changes introduces new assets owned by users who previously did not have access to the project, a pending project share is automatically created for each of those users. Those users will not be able to access the project until an admin approves or rejects the pending share.","parameters":[{"name":"body","in":"body","required":true,"description":"Parameters describing the remote branch whose commits should be fetched, merged, and imported into the application.\n\nAny new HTTP(S) credentials to use in the fetch can optionally be provided.\n\nIf no HTTP(S) credentials are provided, but HTTP(S) credentials were previously saved for the current user and project, then those saved credentials are used in the fetch.","schema":{"type":"object","properties":{"remoteBranch":{"type":"string","description":"Name of the branch in the remote Git repository whose commits you want to fetch and merge. The commits will be merged into the current branch of the local Git repository of this project.","example":"feature-branch"},"httpsCredentials":{"type":"object","description":"HTTP(S) credentials of the current user for accessing the remote Git repository connected to this project.\n\nIf credentials are not provided, and credentials were previously saved for the current user and this project, then those saved credentials will be used. Each user can save a different set of credentials for each project.\n\nIf credentials are not provided, and no credentials were previously saved, then an error will be returned.","properties":{"username":{"type":"string","description":"HTTP(S) username","example":"user123456"},"password":{"type":"string","description":"HTTP(S) password or Personal Access Token","example":"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"save":{"type":"boolean","description":"Whether these credentials for the current user and should be saved for automatic reuse in later remote Git actions performed by the current user in this particular project.\nEach user can save their own set of remote credentials for each project.\nOnly credentials that were successfully used with the remote repository will be saved.","example":true}},"required":["username","password"]}},"required":["remoteBranch"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"204":{"description":"The Git fetch, Git merge, and import were all successful.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"452":{"description":"The Git fetch was successful, but conflicts were encountered when attempting Git merge, and the merge was aborted. No changes were imported into the application.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95515},"status":{"type":"integer","example":452},"httpMessage":{"type":"string","example":"Merge Conflict"},"message":{"type":"string"},"mergeConflicts":{"type":"array","description":"Details of conflicts that occurred when Git merge was attempted.","items":{"type":"object","properties":{"reason":{"type":"string","description":"Explanation of this merge conflict."},"file":{"type":"string","description":"Relative path to the file related to this merge conflict."}},"required":["reason"]}}},"required":["code","status","httpMessage","message","mergeConflicts"]}}}},"453":{"description":"The Git fetch and Git merge were both successful. However, validation errors were encountered when importing some assets. Other assets may have been imported successfully.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95516},"status":{"type":"integer","example":453},"httpMessage":{"type":"string","example":"Asset Validation Error"},"message":{"type":"string"},"validationErrors":{"type":"object","description":"A collection of JSON validation errors that were encountered when converting assets from git repo","properties":{"timestamp":{"type":"string","description":"The time when the error occurred","example":"2011-10-05T14:48:00.000Z"},"errors":{"type":"object","description":"A mapping of assetId to JSON validation errors that were encountered when converting that asset from git repo","additionalProperties":{"type":"object","description":"A mapping of an asset's subcomponent to JSON validation errors that were encountered when converting that subcomponent from git repo","additionalProperties":{"type":"array","description":"An array of JSON validation errors that were encountered when converting a subcomponent from git repo","items":{"type":"object"}}}}},"required":["timestamp","errors"]}},"required":["code","status","httpMessage","message","validationErrors"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"512":{"description":"The action could not be completed because the Git repository is in a detached HEAD state, and this action is not allowed. Please checkout a branch and try again.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95514},"status":{"type":"integer","example":512},"httpMessage":{"type":"string","example":"Git Detached HEAD"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/push":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"projectGitPush","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Runs Git push.","description":"Uploads commits from the local Git repository of a project to the remote Git repository associated with the project.","parameters":[{"name":"body","in":"body","required":true,"description":"Parameters describing the local source branch to push, the remote destination branch, whether a force push should be executed, and any new HTTP(S) credentials to use in the push.\n\nIf no credentials are provided in the request body, and credentials were saved previously for this user and project, then those saved credentials will be automatically reused.","schema":{"type":"object","properties":{"localBranch":{"type":"string","description":"Name of the branch in the local repository whose commits you want to push to the remote Git repository associated with this project.","example":"feature-branch"},"remoteBranch":{"type":"string","description":"Name of the branch in the remote Git repository where you want commits from `localBranch` to be pushed to.","example":"feature-branch"},"force":{"type":"boolean","description":"If true, the `--force-with-lease` option is used in the `git push` command.","example":false},"httpsCredentials":{"type":"object","description":"HTTP(S) credentials of the current user for accessing the remote Git repository connected to this project.\n\nIf credentials are not provided, and credentials were previously saved for the current user and this project, then those saved credentials will be used. Each user can save a different set of credentials for each project.\n\nIf credentials are not provided, and no credentials were previously saved, then an error will be returned.","properties":{"username":{"type":"string","description":"HTTP(S) username","example":"user123456"},"password":{"type":"string","description":"HTTP(S) password or Personal Access Token","example":"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"save":{"type":"boolean","description":"Whether these credentials for the current user and should be saved for automatic reuse in later remote Git actions performed by the current user in this particular project.\nEach user can save their own set of remote credentials for each project.\nOnly credentials that were successfully used with the remote repository will be saved.","example":true}},"required":["username","password"]}},"required":["localBranch","remoteBranch"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"Git push successful.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","properties":{"remoteMessages":{"type":"array","description":"Messages from the remote Git repository received during the Git push.","example":["Create a pull request for 'feature-branch' on GitHub by visiting:","https://github.com/your-company/marking-project/pull/new/feature-branch"],"items":{"type":"string"}},"remoteUrl":{"type":"string","description":"HTTP(S) URL of the remote Git repository where the commits were pushed to.","example":"https://github.com/your-company/marketing-project.git"}},"required":["remoteUrl","remoteMessages"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"512":{"description":"The action could not be completed because the Git repository is in a detached HEAD state, and this action is not allowed. Please checkout a branch and try again.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95514},"status":{"type":"integer","example":512},"httpMessage":{"type":"string","example":"Git Detached HEAD"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/discard":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"discardProjectChanges","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Discards uncommitted file changes and imports assets.","description":"Removes all uncommitted changes of specified file paths from the working tree in the local Git repository of a project.\n\nThe files of assets in the working tree are validated before being imported into the application.\n\nIf any validation errors are detected in one or more assets during import, an error response is returned with error details about the specific assets that failed validation. The assets failing validation will not be imported. However, in this scenario, any assets that do pass validation will be imported, despite the error response.","parameters":[{"name":"body","in":"body","required":true,"description":"List of file paths whose uncommitted changes should be discarded.","schema":{"type":"object","properties":{"changes":{"type":"array","description":"List of file paths that have changed.","items":{"type":"string","description":"File path, relative to the root of the repository."},"example":["dashboards/65363add391852002a17a203&nbsp;Sample - Healthcare/widgets/65363add391852002a17a204&nbsp;TOTAL PATIENTS ADMITTED/widget.json","dashboards/65363add391852002a17a203&nbsp;Sample - Healthcare/dashboard.json"]}},"required":["changes"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"204":{"description":"Discarding the uncommitted file changes and importing assets succeeded.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"453":{"description":"Discarding the uncommitted file changes succeeded. However, validation errors were encountered when importing some assets. Other assets may have been imported successfully.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95516},"status":{"type":"integer","example":453},"httpMessage":{"type":"string","example":"Asset Validation Error"},"message":{"type":"string"},"validationErrors":{"type":"object","description":"A collection of JSON validation errors that were encountered when converting assets from git repo","properties":{"timestamp":{"type":"string","description":"The time when the error occurred","example":"2011-10-05T14:48:00.000Z"},"errors":{"type":"object","description":"A mapping of assetId to JSON validation errors that were encountered when converting that asset from git repo","additionalProperties":{"type":"object","description":"A mapping of an asset's subcomponent to JSON validation errors that were encountered when converting that subcomponent from git repo","additionalProperties":{"type":"array","description":"An array of JSON validation errors that were encountered when converting a subcomponent from git repo","items":{"type":"object"}}}}},"required":["timestamp","errors"]}},"required":["code","status","httpMessage","message","validationErrors"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/sync":{"x-swagger-router-controller":"projects.controller.v2","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"post":{"x-hide":false,"operationId":"syncProjectChanges","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Synchronizes Git files of assets.","description":"Exports the state of project assets to files in the local Git repository of the project, so that Git files contain the same state as the assets in the application.","responses":{"204":{"description":"Synchronization successful.","headers":{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"409":{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"423":{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/projects/{projectId}/status":{"x-swagger-router-controller":"projects.controller.v2","get":{"x-hide":false,"operationId":"getStatus","x-permission-type":"designers-and-admins-only","tags":["projects"],"summary":"Retrieves a project's Git status.","description":"Returns the Git status of a project's local Git repository.\n\nThe returned status checksum should be used as the `x-git-status-checksum` header in requests to other API endpoints that modify a project's local Git repository.","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"200":{"description":"The Git status of the requested project.","schema":{"type":"object","description":"The status of the working directory of the local Git repository of a project.","properties":{"statusChecksum":{"type":"string","description":"A checksum of the current working directory's file changes, current branch name, and HEAD commit.","example":"bd3590f2d648ff2ce5880a358c038926ff06031bf65a6448b7e6e1a0583c0976"}},"required":["statusChecksum"]}},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/projects/{projectId}/unlock":{"x-swagger-router-controller":"projects.controller.v2","patch":{"x-hide":false,"operationId":"unlockProject","x-permission-type":"admins-only","tags":["projects"],"summary":"Unlocks a project.","description":"When a user makes a request to modify a project, a lock is acquired on that project.\n\nWhen the request completes, the lock will usually be automatically released, allowing other requests to take place.\n\nHowever, if a lock was not automatically released, an admin can use this endpoint to manually release the lock for a project.","parameters":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}],"responses":{"204":{"description":"The lock was released."},"400":{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"403":{"description":"User does not have permission"},"404":{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},"500":{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}}}},"/audit/files":{"x-swagger-router-controller":"audit_log.controller.v2","get":{"tags":["audit"],"operationId":"listAuditLogFiles","x-permission-type":"admins-only","x-roles-allowed":"tenantAdmin,admin","summary":"List available audit log files","description":"This API returns an array of available Audit log files. Each file is validated for integrity - the valid property set to false indicates that the file may have been tempered with or altered.","parameters":[{"in":"header","description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"The device id.","name":"x-device-id","required":false,"type":"string"},{"in":"query","description":"Filter by tenant id","name":"tenantId","required":false,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}],"responses":{"200":{"description":"An array of available Audit log files","schema":{"type":"array","items":{"title":"auditFile","type":"object","properties":{"file":{"type":"string","description":"audit log filename"},"valid":{"type":"boolean","description":"indicates whether the audit log file is valid"},"filePath":{"type":"string","description":"audit log file path"}}}}},"401":{"description":"Unauthorized: Required authentication was not provided.","schema":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}},"403":{"description":"User does not have permission"},"500":{"description":"Internal Server Error\n","schema":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}}},"/audit/log":{"x-swagger-router-controller":"audit_log.controller.v2","post":{"tags":["audit"],"operationId":"receiveAuditLog","x-permission-type":"admins-only","x-roles-allowed":"tenantAdmin,admin","summary":"Send an audit event to the audit log queue","description":"This API accepts an audit event and sends it to the audit log message queue for processing.","parameters":[{"in":"header","description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"The device id.","name":"x-device-id","required":false,"type":"string"},{"in":"body","name":"auditEvent","description":"The audit event to be logged","required":true,"schema":{"title":"auditEvent","type":"object","required":["entity","action","event"],"properties":{"entity":{"type":"string","description":"The entity being audited (e.g., 'user', 'dashboard', 'datamodel')"},"action":{"type":"string","description":"The action performed (e.g., 'login', 'execute', 'create', 'update', 'delete')"},"event":{"description":"Event details and metadata - can be object, array, or any data"},"requester":{"type":"string","description":"Information about who requested the action (required except for 'login' or 'execute' actions)"},"operation":{"type":"string","description":"Optional operation identifier"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}],"responses":{"200":{"description":"Audit event sent successfully","schema":{"title":"auditEventResponse","type":"object","properties":{"success":{"type":"boolean","description":"Indicates whether the audit event was sent successfully"},"message":{"type":"string","description":"Response message"}}}},"400":{"description":"Bad Request: Invalid audit event parameters"},"401":{"description":"Unauthorized: Required authentication was not provided.","schema":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}},"403":{"description":"User does not have permission"},"500":{"description":"Internal Server Error\n","schema":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}}},"/nlq/specs":{"x-swagger-router-controller":"nlq.spec.controller.v2","post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"addNlqSpec","summary":"Add a Natural Language Querying (NLQ) specification","description":"This endpoint adds the given NLQ specifications.","tags":["nlq"],"responses":{"201":{"description":"NLQ spec object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"500":{"description":"Source does not have fields"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Create spec parameters.","name":"addSpec","schema":{"type":"object","required":["sourceId","sourceType"],"properties":{"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}},"required":true},{"in":"query","description":"Should run auto compile.","name":"autoCompile","type":"boolean","required":false},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"get":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"getAllNlqModelSpecs","summary":"Fetches all the Natural Language Querying (NLQ) specifications","description":"This endpoint retrieves all NLQ specifications. It provides a comprehensive set of information related to the structure, constraints, and capabilities of all the NLQ specs.","tags":["nlq"],"responses":{"200":{"description":"List of NLQ specs.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"403":{"description":"User does not have permission"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/specs/{specId}":{"x-swagger-router-controller":"nlq.spec.controller.v2","get":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"getNlqModelSpec","summary":"Fetches the Natural Language Querying (NLQ) specification using the provided specId","description":"This endpoint retrieves a specific NLQ specification using its unique identifier, the specId. It provides a comprehensive set of information related to the structure, constraints, and capabilities of the queried NLQ spec.","tags":["nlq"],"responses":{"200":{"description":"An NLQ spec.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"The NLQ spec ID.","name":"specId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"deleteNlqSpec","summary":"Removes the specified Natural Language Querying (NLQ) specification","description":"This endpoint allows users to delete a specific NLQ specification using its unique identifier, the specId. It helps in managing the collection of NLQ specifications, ensuring that only relevant specs are kept.","tags":["nlq"],"responses":{"200":{"description":"Delete succeeded."},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Spec ID.","name":"specId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"patch":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"updateNlqSpec","summary":"Updates the specified Natural Language Querying (NLQ) specification","description":"This endpoint enables the updating of a specific NLQ specification using its unique identifier, the specId. It allows users to modify the structure, constraints, and capabilities of an NLQ spec according to their evolving needs.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"500":{"description":"Source does not have fields"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Spec ID.","name":"specId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"query","description":"Should run auto compile.","name":"autoCompile","type":"boolean","required":false,"default":false},{"in":"body","description":"Updated spec.","name":"updatedSpec","required":true,"schema":{"type":"object","required":["sourceId","sourceType"],"properties":{"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/specs/{specId}/compile":{"x-swagger-router-controller":"nlq.spec.controller.v2","post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"compileNlqSpec","summary":"Initiates the compilation process for a given NLQ specification","description":"This endpoint triggers the compilation process of a specific NLQ specification using its unique identifier, the specId. Compilation helps to validate the spec and prepares it for efficient querying.","tags":["nlq"],"responses":{"204":{"description":"NLQ spec is being compiled."},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"500":{"description":"Source does not have fields"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Spec ID.","name":"specId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/specs/{specId}/regenerate":{"x-swagger-router-controller":"nlq.controller.v2","post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"regenerateSpec","summary":"Reconstructs an existing NLQ specification based on the current resource fields","description":"This endpoint regenerates an existing NLQ specification using its specId. It discards obsolete elements and incorporates new ones according to the current state of resource fields, ensuring the specification remains relevant and effective.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"500":{"description":"Source does not have fields"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Spec ID.","name":"specId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"query","description":"Should run auto compile.","name":"autoCompile","type":"boolean","required":false},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/liveSchedulers/{datamodelServer}/{datamodelTitle}":{"x-swagger-router-controller":"nlq.controller.v2","get":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"getNlqLiveSchedulers","summary":"Fetches the scheduling details of a specific NLQ spec","description":"This endpoint retrieves the schedule details for a given NLQ specification. The scheduling details include the timing and frequency at which the spec is refreshed or updated.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec schedule object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"datamodel title","name":"datamodelTitle","required":true,"type":"string"},{"in":"path","description":"datamodel server","name":"datamodelServer","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"addNlqLiveScheduler","summary":"Sets up a schedule for a data model which refreshes related NLQ specs as per the schedule","description":"This endpoint sets up a schedule for a data model, and all NLQ specifications related to that model will be updated according to this schedule. This automated approach ensures the NLQ specs are consistently synchronized with the latest data model state.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec schedule object.","schema":{"type":"object","properties":{"active":{"type":"boolean"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["active","hour","minute"]}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"datamodel title","name":"datamodelTitle","required":true,"type":"string"},{"in":"path","description":"datamodel server","name":"datamodelServer","required":true,"type":"string"},{"in":"body","description":"NLQ live scheduler settings.","name":"nlqLiveSchedulerSettings","required":true,"schema":{"type":"object","properties":{"active":{"type":"boolean"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["active","hour","minute"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/liveSchedulers":{"x-swagger-router-controller":"nlq.controller.v2","get":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"getAllNlqLiveSchedulers","summary":"Retrieves the schedule details of all NLQ specs","description":"This endpoint fetches the scheduling details for all NLQ specifications. The details include the timing and frequency at which each spec is refreshed or updated, providing a global view of NLQ spec management.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec schedule object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/liveSchedulers/{schedulerId}":{"x-swagger-router-controller":"nlq.controller.v2","patch":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"updateNlqLiveScheduler","summary":"Updates the scheduling details of a data model","description":"This endpoint updates the schedule of a specific data model. Any changes to the schedule will be reflected in the refresh frequency of NLQ specs related to the updated data model.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec schedule object.","schema":{"type":"object","properties":{"active":{"type":"boolean"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["active","hour","minute"]}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"NLQ live scheduler settings.","name":"nlqLiveSchedulerSettings","required":true,"schema":{"type":"object","properties":{"active":{"type":"boolean"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["active","hour","minute"]}},{"in":"path","name":"schedulerId","type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"deleteNlqLiveScheduler","summary":"Removes the scheduling details for a data model","description":"This endpoint deletes the schedule for a specific data model. Post-deletion, the related NLQ specs will no longer be refreshed according to the previous schedule.","tags":["nlq"],"responses":{"200":{"description":"Deletion completed successfully."},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","name":"schedulerId","type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/specs/generate":{"x-swagger-router-controller":"nlq.spec.controller.v2","post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/initSpec","operationId":"generateNlqSpecs","summary":"Generates NLQ specifications based on provided resources","description":"This endpoint generates NLQ specifications using the provided resources such as data model, perspective, view, and a list of fields. This feature allows the creation of customized NLQ specs based on unique resource configurations.","tags":["nlq"],"responses":{"200":{"description":"NLQ spec object.","schema":{"type":"object","required":["sourceId","sourceType","tenantId"],"properties":{"_id":{"type":"string"},"datasourceTitle":{"type":"string"},"sourceId":{"type":"string"},"sourceType":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"column":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"applySynonyms":{"type":"boolean"},"indexed":{"type":"boolean"},"applySynonymsMembers":{"type":"boolean"},"autoUpdate":{"type":"boolean"},"autoCreated":{"type":"boolean"}}}},"isModified":{"type":"boolean"},"isAutoMerge":{"type":"boolean"},"tenantId":{"type":"string"},"status":{"type":"string"},"lastUpdated":{"type":"string"},"lastCompiled":{"type":"string"},"disableAutoUpdate":{"type":"boolean"},"defaultDateTable":{"type":"string"},"defaultDateColumn":{"type":"string"},"defaultMeasureTable":{"type":"string"},"defaultMeasureColumn":{"type":"string"}}}},"401":{"description":"No NLQ permissions on the source"},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"500":{"description":"Source does not have fields"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Resource type.","name":"specGenerationObject","required":true,"schema":{"type":"array","items":{"type":"object","properties":{"sourceType":{"type":"string","description":"datamodel | dashboard | perspective","enum":["dashboard","datamodel","perspective"]},"sourceId":{"type":"string"},"autoCompile":{"type":"boolean","default":false}}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/permissions":{"x-swagger-router-controller":"nlq.controller.v2","x-permission-type":"general","x-permission-path":"nlq/createSpec","get":{"x-hide":false,"operationId":"getAllNlqPermissions","summary":"Retrieves a list of permissions for a specific entity related to NLQ","description":"This endpoint fetches the list of NLQ permissions assigned to a specific entity. It provides a way to manage and adjust access control, ensuring appropriate access levels for different entities in relation to NLQ.","tags":["nlq"],"responses":{"200":{"description":"Array of NLQ permissions.","schema":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string"},"id":{"type":"string"},"enabled":{"type":"boolean"},"tenantId":{"type":"string"}}}}},"403":{"description":"User does not have permission"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"query","description":"The elasticube title.","name":"elasticubeTitle","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/nlq/permissions/{level}/{id}":{"x-swagger-router-controller":"nlq.controller.v2","get":{"x-hide":false,"x-permission-type":"none","operationId":"getNlqPermission","summary":"Fetches NLQ permissions for a specified entity","description":"This endpoint retrieves the NLQ permissions assigned to an entity defined by a specific level and ID. It provides insights into the access rights the particular entity has over NLQ functionalities.","tags":["nlq"],"responses":{"200":{"description":"Entity's NLQ permission.","schema":{"type":"object","properties":{"level":{"type":"string"},"id":{"type":"string"},"enabled":{"type":"boolean"},"tenantId":{"type":"string"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","name":"level","required":true,"description":"Level to check permission \"datamodel | dashboard | perspective\".","type":"string","enum":["dashboard","datamodel","perspective"]},{"in":"path","description":"The ID of the entity.","name":"id","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-hide":false,"x-permission-type":"general","x-permission-path":"nlq/createSpec","operationId":"setNlqPermission","summary":"Assigns NLQ permissions to a specified entity","description":"This endpoint sets the NLQ permissions for an entity, identified by a specific level and ID. It's used to establish access control, allowing or limiting an entity's access to NLQ functionalities.","tags":["nlq"],"responses":{"200":{"description":"NLQ permission.","schema":{"type":"object","properties":{"level":{"type":"string","enum":["cube","dashboard"]},"entity":{"type":"string"},"enabled":{"type":"boolean"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","name":"level","required":true,"description":"Level to check permission \"datamodel | dashboard | perspective\".","type":"string","enum":["dashboard","datamodel","perspective"]},{"in":"path","description":"The ID of the entity.","name":"id","required":true,"type":"string"},{"in":"body","description":"Permission object to set enabled or disabled.","name":"nlpPermissionObject","required":true,"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/nlq/query":{"x-swagger-router-controller":"nlq.rt.controller.v2","x-permission-type":"authenticate","post":{"x-hide":false,"operationId":"query","summary":"Decomposes a sentence into parts, matches them to JAQLs, and provides suggestions in case of ambiguities","description":"This endpoint decomposes a sentence into constituent parts and attempts to map them to JAQL queries. In instances where the mapping isn't clear-cut, the endpoint suggests multiple JAQL sets, allowing users to choose the most appropriate query for their needs.","tags":["nlq"],"responses":{"200":{"description":"Query response.","schema":{"type":"object","properties":{"specId":{"type":"string"},"text":{"type":"string"},"refinements":{"type":"array","items":{"type":"object"}},"timezone":{"type":"string"},"description":{"type":"string"},"jaql":{"type":"object"},"matches":{"type":"object"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"NLQ Query.","required":true,"name":"nlqQuery","schema":{"type":"object","properties":{"specId":{"type":"string"},"text":{"type":"string"},"refinements":{"type":"array","items":{"type":"object"}},"timezone":{"type":"string"},"format":{"description":"Can be one of the follow: jaql | dataset | lite-jaql","type":"string","enum":["jaql","dataset","lite-jaql"]}},"required":["specId","text","timezone"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/nlq/query/{sourceId}":{"x-swagger-router-controller":"nlq.llm.controller.v2","x-permission-type":"authenticate","post":{"x-hide":false,"operationId":"query","summary":"Translates natural language queries into structured analytical queries","description":"Translates natural language queries into structured analytical queries, enabling conversational analytics. The API returns a query, visualization recommendations, and follow-up questions.\n","tags":["AI"],"responses":{"200":{"description":"Query response.","schema":{"type":"object","properties":{"nlqPrompt":{"type":"string"},"jaql":{"type":"object","properties":{"datasource":{"type":"object"},"metadata":{"type":"object"}}},"chartRecommendations":{"type":"object","properties":{"chartFamily":{"type":"string"},"chartType":{"type":"string"},"axesMapping":{"type":"object"}}},"queryTitle":{"type":"string"},"detailedDescription":{"type":"string"}}}},"403":{"description":"User does not have permission"},"404":{"description":"The source was not found"},"429":{"description":"Too Many Requests - Rate limit exceeded","schema":{"type":"object","properties":{"error":{"allOf":[{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},{"type":"object","properties":{"detail":{"type":"string","description":"Additional details about the rate limit error"}}}]}}}}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"NLQ Query.","required":true,"name":"nlqQuery","schema":{"type":"object","properties":{"text":{"type":"string"},"chartTypeRequested":{"type":"string","example":"pie"},"chartTypes":{"type":"array","items":{"type":"string"},"example":["indicator","column","line","table","pie","bar"]}},"required":["text"]}},{"in":"path","description":"The source ID. Datamodel title/Perspective name","name":"sourceId","required":true,"type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/chats/{chatId}":{"x-swagger-router-controller":"aiChat.controller.v2","x-permission-type":"authenticate","post":{"x-hide":false,"operationId":"chat","summary":"Chat about your data","description":"Ask Sisense a question and chat about the question result.\n","tags":["AI/Chats"],"responses":{"200":{"description":"Chat response","schema":{"type":"object","properties":{"responseType":{"type":"string","description":"The response Type of the chat task.","enum":["nlq","text","systemMessage","error"]},"data":{"type":"object","description":"The data object holds the result set according to the response type.","properties":{"nlqPrompt":{"type":"string","description":"The AI generated NLQ question being analyzed."},"queryTitle":{"type":"string","description":"An AI generated textual description explaining the underlying interpreted query, in natural language."},"detailedDescription":{"type":"string","description":"An AI generated textual description explaining the underlying interpreted query, while referencing the exact [table.column]."},"jaql":{"type":"object","properties":{"datasource":{"type":"object"},"metadata":{"type":"array","items":{"type":"object"}}}},"chartRecommendations":{"type":"object","properties":{"chartFamily":{"type":"string"},"chartType":{"type":"string"},"axesMapping":{"type":"object"}}},"followupQuestions":{"type":"array","items":{"type":"string"},"description":"An AI generated list of follow-up questions based on what the nlq asked."}},"required":["nlqPrompt","queryTitle","detailedDescription","jaql","chartRecommendations","followupQuestions"]},"timestamp":{"type":"string","description":"The timestamp."}},"required":["responseType","data","timestamp"]}},"400":{"description":"LLM configuration is missing."},"403":{"description":"User does not have permission"},"404":{"description":"Chat not found."},"422":{"description":"Wrong parameters."},"500":{"description":"General error."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"chat ID","name":"chatId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"body","description":"The chat request","required":true,"name":"chatRequest","schema":{"type":"object","properties":{"text":{"type":"string"},"timezone":{"type":"string","example":"UTC"},"options":{"type":"object","properties":{"enableFollowup":{"type":"boolean","default":true},"chartTypes":{"type":"array","items":{"type":"string"},"default":["table","indicator","bar","line","column","pie"],"example":["indicator","column","line","table","pie","bar"]}}}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide":false,"operationId":"deleteChatById","summary":"Delete the given chat","description":"Deletes a chat by the given chat ID.\n","tags":["AI/Chats"],"responses":{"204":{"description":"Chat was deleted."},"403":{"description":"User does not have permission"},"404":{"description":"Chat not found."},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"The chat ID","name":"chatId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"get":{"x-hide":false,"operationId":"getChatById","summary":"Retrieve a chat","description":"Retrieve a chat by given chat ID.\n","tags":["AI/Chats"],"responses":{"200":{"description":"user chat","schema":{"type":"object","properties":{"chatHistory":{"type":"array","items":{"type":"object"}},"chatId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"contextDetails":{"type":"object","properties":{"dashboardId":{"type":"string"}}},"contextTitle":{"type":"string"},"expireAt":{"type":"string"},"lastUpdate":{"type":"string"},"tenantId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"userId":{"type":"string"},"volatile":{"type":"boolean"}}}},"403":{"description":"User does not have permission"},"404":{"description":"Chat not found."},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"The chat ID","name":"chatId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/chats":{"x-swagger-router-controller":"aiChat.controller.v2","x-permission-type":"authenticate","get":{"x-hide":false,"operationId":"getUserChats","summary":"Retrieve all the current user chats","description":"Retrieve all the user chats and contexts.\n","tags":["AI/Chats"],"responses":{"200":{"description":"List of user chats","schema":{"type":"array","items":{"type":"object","properties":{"chatId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"contextDetails":{"type":"object","properties":{"dashboardId":{"type":"string"}}},"contextTitle":{"type":"string"},"expireAt":{"type":"string"},"lastUpdate":{"type":"string"},"tenantId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"userId":{"type":"string"},"volatile":{"type":"boolean"},"chatHistory":{"type":"array","items":{"type":"object"}}}}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide":false,"operationId":"deleteUserChats","summary":"Delete all the user chats","description":"Deletes the chats for the calling user.\n","tags":["AI/Chats"],"responses":{"204":{"description":"chat was deleted"},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-hide":false,"x-permission-type":"authenticate","x-permission-path":"nlq/createSpec","operationId":"createChat","summary":"Create and retrieve a new user chat","description":"Create and retrieve a new user chat.\n","tags":["AI/Chats"],"responses":{"200":{"description":"user chat","schema":{"type":"object","properties":{"chatHistory":{"type":"array","items":{"type":"object"}},"chatId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"contextDetails":{"type":"object","properties":{"dashboardId":{"type":"string"}}},"contextTitle":{"type":"string"},"expireAt":{"type":"string"},"lastUpdate":{"type":"string"},"tenantId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"userId":{"type":"string"},"volatile":{"type":"boolean"}}}},"403":{"description":"User does not have permission"},"404":{"description":"Chat context not found in tenant."},"409":{"description":"Conflict, chat already exists."},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"chat request","required":true,"name":"chatRequest","schema":{"type":"object","properties":{"sourceId":{"type":"string"},"contextDetails":{"type":"object","properties":{"dashboardId":{"type":"string"}}},"volatile":{"type":"boolean"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/feedback":{"x-swagger-router-controller":"aiChat.controller.v2","x-permission-type":"authenticate","post":{"x-hide":false,"operationId":"sendFeedback","summary":"Send feedback about a chat","description":"Send feedback about a chat.\n","tags":["AI"],"responses":{"200":{"description":"Feedback was sent."},"403":{"description":"User does not have permission"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"feedback request","required":true,"name":"feedbackRequest","schema":{"type":"object","properties":{"type":{"type":"string"},"data":{"type":"object"},"sourceId":{"type":"string"},"rating":{"type":"integer"}},"required":["type","data","sourceId","rating"]}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/chats/{chatId}/history":{"x-swagger-router-controller":"aiChat.controller.v2","x-permission-type":"authenticate","delete":{"x-hide":false,"operationId":"clearChatHistory","summary":"Delete the given chat history","description":"Deletes the chat history by the given chat ID.\n","tags":["AI/Chats"],"responses":{"204":{"description":"Chat history was deleted."},"403":{"description":"User does not have permission"},"404":{"description":"Chat was not found."},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"The chat ID","name":"chatId","required":true,"type":"string","pattern":"^[0-9a-fA-F]{24}$"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/recommendations/query/{sourceId}/{numOfRecommendations}":{"x-swagger-router-controller":"llm.controller.v2","get":{"x-hide":false,"x-permission-type":"authenticate","operationId":"getRecommendedQueries","summary":"Gets the recommended queries for the specified source.","description":"Returns recommended queries for the specified source. The source can be a data model or a perspective title.\n","tags":["AI"],"responses":{"200":{"description":"A list of queries","schema":{"type":"array","items":{"type":"object","properties":{"nlqPrompt":{"type":"string"},"jaql":{"type":"object","properties":{"datasource":{"type":"object"},"metadata":{"type":"object"}}},"chartRecommendations":{"type":"object","properties":{"chartFamily":{"type":"string"},"chartType":{"type":"string"},"axesMapping":{"type":"object"}}},"queryTitle":{"type":"string"},"detailedDescription":{"type":"string"}}}}},"400":{"description":"LLM configuration is missing."},"403":{"description":"User does not have permission"},"404":{"description":"sourceId is missing from tenant."},"422":{"description":"Wrong parameters."},"500":{"description":"General error."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Data model/perspective title.","required":true,"name":"sourceId","type":"string"},{"in":"path","description":"Number of queries to generate","required":true,"name":"numOfRecommendations","type":"number"},{"in":"query","description":"User prompt to provide additional instructions for query generation","name":"userPrompt","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/nlg/queryResult":{"x-swagger-router-controller":"llm.controller.v2","x-permission-type":"authenticate","post":{"x-hide":false,"operationId":"nlgQueryResult","summary":"Returns a NLG (Natural Language Generated) description of the query result","description":"Uses an LLM to generate a natural-language description of the query result.\n","tags":["AI"],"responses":{"200":{"description":"Query result description.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"answer":{"type":"string"}}},"responseType":{"type":"string","enum":["text","error","systemMessage"]}}}},"400":{"description":"Query/LLM configuration is missing."},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters."},"429":{"description":"Too Many Requests - Rate limit exceeded","schema":{"type":"object","properties":{"error":{"allOf":[{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},{"type":"object","properties":{"detail":{"type":"string","description":"Additional details about the rate limit error"}}}]}}}},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"query","name":"lang","type":"string","required":false,"description":"Override authenticated user's language for this request (e.g. en, en-US)."},{"in":"body","description":"nlgRequest","required":true,"name":"nlgRequest","schema":{"type":"object","required":["jaql"],"properties":{"verbosity":{"type":"string","description":"The verbosity of the summarization.","enum":["Low","High"]},"jaql":{"type":"object"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/models":{"x-swagger-router-controller":"llm.controller.v2","get":{"x-permission-type":"admins-only","operationId":"getLlmModels","summary":"Lists LLMs","description":"Returns available LLM models","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"query","name":"skip","default":0,"type":"integer","minimum":0,"description":"Skip the first n models"},{"in":"query","name":"limit","default":10,"type":"integer","minimum":0,"description":"Limit the number of models to return"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}],"responses":{"200":{"description":"A list of models","schema":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"model":{"type":"string"},"provider":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"},"scope":{"type":"string","enum":["sisense_managed","customer_byok"]}}}},"totalCount":{"type":"integer","minimum":0}}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}}},"post":{"x-permission-type":"admins-only","operationId":"createLlmModel","summary":"Creates a new model and tests the connection if requested.","description":"Creates an LLM model record and tests the connection if requested with query parameter `testConnection`.","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"responses":{"200":{"description":"A new model id","schema":{"type":"object","properties":{"id":{"type":"string"}}}},"400":{"description":"LLM configuration is wrong."},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","required":true,"description":"LLM model to create","name":"llmModel","schema":{"type":"object","required":["name","provider","config"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"region":{"type":"string"},"provider":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"},"config":{"type":"object","description":"Model configuration for the LLM model.\n\n<br/>For azure\n  - model: string\n  - deployment_name: string\n  - api_base_url: string\n  - api_key: string\n\n<br/>For openai\n  - model: string\n  - api_key: string\n  - api_base (optional): string\n  - organization (optional): string\n\n<br/>For bedrock\n  - model: string\n  - aws_access_key_id: string\n  - aws_secret_access_key: string\n  - aws_region: string\n"}}}},{"in":"query","name":"testConnection","type":"boolean","default":false,"description":"Test model connection"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/models/{modelId}":{"x-swagger-router-controller":"llm.controller.v2","get":{"x-permission-type":"admins-only","operationId":"getLlmModelById","summary":"Gets a model by ID","description":"Returns a model by ID","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"responses":{"200":{"description":"A model","schema":{"allOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"model":{"type":"string"},"provider":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"},"scope":{"type":"string","enum":["sisense_managed","customer_byok"]}}},{"type":"object","properties":{"description":{"type":"string"},"region":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}}]}},"403":{"description":"User does not have permission"},"404":{"description":"Model not found"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Model id","required":true,"name":"modelId","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-permission-type":"admins-only","operationId":"deleteLlmModelById","summary":"Deletes an LLM model record","description":"Deletes an LLM model record","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"responses":{"204":{"description":"Model deleted successfully"},"403":{"description":"User does not have permission"},"404":{"description":"Model not found"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Model id","required":true,"name":"modelId","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"patch":{"x-permission-type":"admins-only","operationId":"updateLlmModelById","summary":"Updates an LLM model record","description":"Updates an LLM model record","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"responses":{"200":{"description":"Model updated successfully"},"403":{"description":"User does not have permission"},"404":{"description":"Model not found"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"Model id","required":true,"name":"modelId","type":"string"},{"in":"body","description":"Model to update","required":true,"name":"llmModel","schema":{"type":"object","required":["name","provider","config"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"region":{"type":"string"},"provider":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"},"config":{"type":"object","description":"Model configuration for the LLM model.\n\n<br/>For azure\n  - model: string\n  - deployment_name: string\n  - api_base_url: string\n  - api_key: string\n\n<br/>For openai\n  - model: string\n  - api_key: string\n  - api_base (optional): string\n  - organization (optional): string\n\n<br/>For bedrock\n  - model: string\n  - aws_access_key_id: string\n  - aws_secret_access_key: string\n  - aws_region: string\n"}}}},{"in":"query","name":"testConnection","type":"boolean","default":false,"description":"Test model connection"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/models/providers":{"x-swagger-router-controller":"llm.controller.v2","get":{"x-permission-type":"admins-only","operationId":"getLlmModelsProviders","summary":"Lists LLM providers","description":"Returns available LLM providers","x-hide-by-env":{"envVar":"USE_LLM_GW","value":"false"},"tags":["AI"],"responses":{"200":{"description":"A list of models providers","schema":{"type":"array","items":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"},{"description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","in":"header","name":"authorization","pattern":"^Bearer .*","required":false,"type":"string"}]}},"/ai/llm/test":{"x-swagger-router-controller":"llm.controller.v2","post":{"x-permission-type":"admins-only","operationId":"testLlmConnectivity","summary":"Validate LLM configuration","deprecated":true,"description":"Validates the LLM configuration before saving or using it.","tags":["connectivity"],"responses":{"200":{"description":"Success","schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}}},"400":{"description":"Failure","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","required":true,"description":"LLM model to test","name":"llmModel","schema":{"type":"object","required":["name","provider","config"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"region":{"type":"string"},"provider":{"type":"string","enum":["azure","openai","bedrock"],"description":"LLM model management providers"},"config":{"type":"object","description":"Model configuration for the LLM model.\n\n<br/>For azure\n  - model: string\n  - deployment_name: string\n  - api_base_url: string\n  - api_key: string\n\n<br/>For openai\n  - model: string\n  - api_key: string\n  - api_base (optional): string\n  - organization (optional): string\n\n<br/>For bedrock\n  - model: string\n  - aws_access_key_id: string\n  - aws_secret_access_key: string\n  - aws_region: string\n"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/{modelId}/test":{"x-swagger-router-controller":"llm.controller.v2","get":{"x-permission-type":"admins-only","operationId":"testLlmConnectivityById","summary":"Tests connectivity for an LLM model","description":"Tests connectivity for the specified model ID","tags":["connectivity"],"responses":{"200":{"description":"Success","schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}}},"400":{"description":"Failure","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"path","description":"LLM model id","required":true,"name":"modelId","type":"string"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/consumption/capture":{"x-swagger-router-controller":"llm.controller.v2","post":{"x-permission-type":"authenticate","operationId":"captureConsumption","summary":"Capture consumption ID for LLM usage tracking","description":"Captures a consumption ID from the consumption service for tracking LLM model usage.\nModel and model scope are derived from the x-feature-name header (same mapping as LLM config).\nReturns a capture UUID that should be used when reporting consumption.\n","tags":["AI"],"responses":{"200":{"description":"Consumption capture UUID","schema":{"type":"object","properties":{"captureUuid":{"type":"string","description":"Consumption capture UUID for tracking"}}}},"400":{"description":"Bad request - missing required parameters or headers"},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters"},"500":{"description":"Failed to capture consumption ID"},"504":{"description":"Timeout/feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","name":"x-feature-name","type":"string","required":true,"description":"Feature name for tracking (e.g. ASSISTANT, NARRATIVE, NLG). Model and scope are derived from this."},{"in":"header","name":"x-user-action-id","type":"string","required":true,"description":"User action identifier for the request"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/llm/consumption/report":{"x-swagger-router-controller":"llm.controller.v2","post":{"x-permission-type":"authenticate","operationId":"reportConsumption","summary":"Report consumption for LLM usage tracking","description":"Reports consumption to the consumption service using a previously captured consumption ID.\nModel and model scope are derived from the x-feature-name header (same mapping as LLM config).\nThis should be called after LLM usage to track token consumption.\n","tags":["AI"],"responses":{"200":{"description":"Consumption report result","schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether consumption was successfully reported"}}}},"400":{"description":"Bad request - missing required parameters or headers"},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters"},"500":{"description":"Failed to report consumption"},"504":{"description":"Timeout/feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"query","name":"consumptionId","type":"string","required":true,"description":"The consumption ID to report (obtained from captureConsumption)"},{"in":"header","name":"x-feature-name","type":"string","required":true,"description":"Feature name for tracking (e.g. ASSISTANT, NARRATIVE, NLG). Model and scope are derived from this."},{"in":"header","name":"x-user-action-id","type":"string","required":true,"description":"User action identifier for the request"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/settings/ai/llmProvider":{"x-swagger-router-controller":"llm.controller.v2","post":{"x-hide":false,"x-permission-type":"admins-only","x-permission-path":"nlq/createSpec","deprecated":true,"operationId":"setLlmConfig","summary":"Configures the LLM provider","description":"Configures the LLM provider settings","tags":["settings"],"responses":{"200":{"description":"Operation succeeded."},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"connection details","required":true,"name":"llmConfig","schema":{"type":"object","properties":{"provider":{"type":"string","enum":["azure","open_ai"],"description":"Supported provider:\n  * azure - Azure OpenAI LLM\n  * open_ai - Open AI API\n"},"apiKey":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide":false,"x-permission-type":"admins-only","x-permission-path":"nlq/createSpec","deprecated":true,"operationId":"deleteLlmConfig","summary":"Deletes the LLM provider configuration","description":"Deletes the LLM provider configuration","tags":["settings"],"responses":{"204":{"description":"llm provider details were deleted"},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"get":{"x-hide":false,"x-permission-type":"admins-only","x-permission-path":"nlq/createSpec","deprecated":true,"operationId":"getLlmConfig","summary":"Gets the LLM provider configuration","description":"Retrieves the LLM provider configuration","tags":["settings"],"responses":{"200":{"description":"llm configuration","schema":{"type":"object","properties":{"provider":{"type":"string","enum":["azure","open_ai"],"description":"Supported provider:\n  * azure - Azure OpenAI LLM\n  * open_ai - Open AI API\n"},"apiKey":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}}},"403":{"description":"User does not have permission"},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/settings/ai":{"x-swagger-router-controller":"settings.controller.v2","x-permission-type":"authenticate","get":{"operationId":"getAISettings","summary":"Returns particular AI settings","description":"Returns AI configurations, including AI Assistant, AI Studio, Semantic Enrichment, and Narratives.\n","tags":["settings"],"responses":{"200":{"description":"AI settings retrieved successfully","schema":{"type":"object","required":["enabled","aiAssistant","aiSemanticEnrichment","aiStudio","narration"],"properties":{"enabled":{"type":"boolean","description":"If AI is enabled."},"quotaNotification":{"type":"boolean","description":"If quota notification is enabled."},"featureModelType":{"type":"string","description":"What type of LLM models have to be applied on AI features execution. Only customer_byok is supported for now.","default":"customer_byok","enum":["sisense_managed","customer_byok"]},"aiAssistant":{"type":"object","required":["enabled","unified","aiAccessControl"],"properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behavior on Dashboards."}}},"aiSemanticEnrichment":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","required":["enabled","realtime","usageDisplay"],"properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"narration":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"If Narrative is enabled."},"sisenseAIEnabled":{"type":"boolean","description":"If Sisense AI is enabled."}}}}}},"403":{"description":"User does not have permission"},"500":{"description":"General error occurred"},"504":{"description":"Timeout or feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-permission-type":"admins-only","operationId":"setAISettings","summary":"Updates AI settings","description":"Updates AI configurations, including AI Assistant, AI Studio, Semantic Enrichment, and Narratives.\n","tags":["settings"],"responses":{"200":{"description":"AI settings updated successfully"},"403":{"description":"User does not have permission"},"422":{"description":"Invalid parameters provided"},"500":{"description":"General error occurred"},"504":{"description":"Timeout or feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Object containing the AI settings","name":"aiSettings","schema":{"type":"object","required":["enabled","aiAssistant","aiSemanticEnrichment","aiStudio","narration"],"properties":{"enabled":{"type":"boolean","description":"If AI is enabled."},"quotaNotification":{"type":"boolean","description":"If quota notification is enabled."},"featureModelType":{"type":"string","description":"What type of LLM models have to be applied on AI features execution. Only customer_byok is supported for now.","default":"customer_byok","enum":["sisense_managed","customer_byok"]},"aiAssistant":{"type":"object","required":["enabled","unified","aiAccessControl"],"properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behavior on Dashboards."}}},"aiSemanticEnrichment":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","required":["enabled","realtime","usageDisplay"],"properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"narration":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"If Narrative is enabled."},"sisenseAIEnabled":{"type":"boolean","description":"If Sisense AI is enabled."}}}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"patch":{"x-permission-type":"admins-only","operationId":"patchAISettings","summary":"Partially updates AI settings","description":"Partially updates AI configurations, including AI Assistant, AI Studio, Semantic Enrichment, and Narratives.\n","tags":["settings"],"responses":{"200":{"description":"AI settings updated successfully"},"403":{"description":"User does not have permission"},"422":{"description":"Invalid parameters provided"},"500":{"description":"General error occurred"},"504":{"description":"Timeout or feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Object containing the partial AI settings","name":"aiSettings","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI is enabled."},"quotaNotification":{"type":"boolean","description":"If quota notification is enabled."},"featureModelType":{"type":"string","description":"What type of LLM models have to be applied on AI features execution. Only customer_byok is supported for now","default":"customer_byok","enum":["sisense_managed","customer_byok"]},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behavior on Dashboards."}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"narration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Narrative is enabled."},"sisenseAIEnabled":{"type":"boolean","description":"If Sisense AI is enabled."}}}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/settings/ai/terms":{"x-swagger-router-controller":"settings.controller.v2","x-permission-type":"authenticate","get":{"operationId":"getAITerms","summary":"Returns AI terms and conditions accepted status","description":"Returns AI terms and conditions accepted status.\n","tags":["settings"],"responses":{"200":{"description":"AI terms and conditions accepted status retrieved successfully","schema":{"type":"object","required":["accepted"],"properties":{"accepted":{"type":"boolean","description":"If AI terms are accepted."}}}},"403":{"description":"User does not have permission"},"500":{"description":"General error occurred"},"504":{"description":"Timeout or feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-permission-type":"admins-only","operationId":"setAITerms","summary":"Updates AI terms and conditions accepted status","description":"Updates AI terms and conditions accepted status.\n","tags":["settings"],"responses":{"200":{"description":"AI terms and conditions accepted status updated successfully"},"403":{"description":"User does not have permission"},"422":{"description":"Invalid parameters provided"},"500":{"description":"General error occurred"},"504":{"description":"Timeout or feature disabled"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Object containing the AI terms and conditions","name":"aiTerms","schema":{"type":"object","required":["accepted"],"properties":{"accepted":{"type":"boolean","description":"If AI terms are accepted."}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/settings/ai/vdb":{"x-swagger-router-controller":"vdb.controller.v2","x-permission-type":"data-admins-only","get":{"x-hide-in-deployment":"cloud","x-roles-allowed":"tenantAdmin,admin,super","operationId":"getVdbInfo","summary":"Get current VDB configuration type.","description":"Returns the type of VDB currently configured in the system.\n  - For self-hosted deployments the value will be `custom` (a customer-managed connection).\n  - For cloud-managed deployments the value will be `sisense`.\n","tags":["settings"],"responses":{"200":{"description":"VDB configuration type.","schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"The verbosity of the summarization.","x-nullable":true,"enum":["sisense","custom"]}}}},"403":{"description":"User does not have permission"},"500":{"description":"General error."},"504":{"description":"Timeout or feature is disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"post":{"x-hide-in-deployment":"cloud","operationId":"postCustomVdb","summary":"Set Custom VDB connection.","description":"Sets or updates the custom VDB connection string for self-hosted deployments.","tags":["settings"],"responses":{"200":{"description":"Custom VDB connection string successfully set or updated."},"400":{"description":"Invalid connection string provided."},"403":{"description":"User does not have permission"},"422":{"description":"Invalid or missing parameters."},"500":{"description":"General error."},"504":{"description":"Timeout or feature is disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"VDB connection details.","name":"connectionDetails","schema":{"type":"object","required":["connection"],"properties":{"connection":{"type":"string","description":"VDB connection string."}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]},"delete":{"x-hide-in-deployment":"cloud","x-roles-allowed":"tenantAdmin,admin,super","operationId":"deleteCustomVdb","summary":"Delete custom VDB connection.","description":"Deletes the currently configured custom VDB connection string for self-hosted deployments.","tags":["settings"],"responses":{"204":{"description":"Custom VDB connection deleted successfully."},"403":{"description":"User does not have permission"},"504":{"description":"Timeout or feature is disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/ai/vdb/test":{"x-swagger-router-controller":"vdb.controller.v2","x-permission-type":"data-admins-only","post":{"x-hide-in-deployment":"cloud","operationId":"testCustomVdb","summary":"Test Custom VDB connection.","description":"Allows to test custom VDB connection without saving it.","tags":["connectivity"],"responses":{"200":{"description":"Information about the connection.","schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}}},"400":{"description":"Wrong connection provided."},"403":{"description":"User does not have permission"},"422":{"description":"Wrong parameters."},"500":{"description":"General error."},"504":{"description":"Timeout/feature disabled."}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"VDB connection details.","name":"connectionDetails","schema":{"type":"object","required":["connection"],"properties":{"connection":{"type":"string","description":"VDB connection string."}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/semantic-search/widget-search":{"x-swagger-router-controller":"dashboardSemanticSearch.controller.v2","x-permission-type":"none","post":{"x-hide":false,"operationId":"searchWidget","summary":"Search for similar widgets.","description":"Returns similar widgets and dashboards based on semantic search using vector embeddings.","tags":["Dashboard Semantic Search"],"responses":{"200":{"description":"Array of semantically similar widgets and dashboards","schema":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["widget","dashboard"],"description":"Type of the search result"},"id":{"type":"string","description":"Unique identifier of the widget or dashboard"},"title":{"type":"string","description":"Title of the widget or dashboard"},"description":{"type":"string","description":"Description of the widget or dashboard"},"dashboardId":{"type":"string","description":"ID of the dashboard (for widget results)"},"dashboardTitle":{"type":"string","description":"Title of the dashboard (for widget results)"},"widgetType":{"type":"string","description":"Type of widget (chart, table, etc.)"},"dataSource":{"type":"string","description":"Data source identifier"},"similarity":{"type":"number","format":"float","minimum":0,"maximum":1,"description":"Similarity score between 0 and 1"},"url":{"type":"string","description":"URL to navigate to the widget or dashboard"},"metadata":{"type":"object","description":"Additional metadata about the item"}}}}},"400":{"description":"Bad request - invalid search parameters"},"403":{"description":"User does not have permission"},"500":{"description":"Internal server error"},"503":{"description":"Service unavailable - vector database is not accessible"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Widget search request object","name":"data","required":true,"schema":{"type":"object","required":["searchString"],"properties":{"searchString":{"type":"string","description":"The search query string for finding similar widgets","example":"sales performance chart"},"options":{"type":"object","description":"Additional search options","properties":{"limit":{"type":"integer","description":"Maximum number of results to return","default":10,"minimum":1,"maximum":50},"type":{"type":"string","enum":["widget","dashboard"],"description":"Filter by result type"},"dashboardId":{"type":"string","description":"Filter by specific dashboard ID"},"widgetType":{"type":"string","description":"Filter by widget type (chart, table, etc.)"},"dataSource":{"type":"string","description":"Filter by data source"}}}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/semantic-search/similar-widget-recommendations":{"x-swagger-router-controller":"dashboardSemanticSearch.controller.v2","x-permission-type":"none","post":{"x-hide":false,"operationId":"getWidgetRecommendations","summary":"Get similar widget recommendations.","description":"Returns intelligent widget suggestions based on semantic similarity to a source widget.\n\n**Primary Use Cases:**\n\n🎯 **Dashboard Enhancement & Discovery** - When viewing/editing a dashboard, suggest similar widgets that might be relevant (e.g., \"Sales Revenue Chart\" → recommend \"Profit Margin Chart\", \"Sales by Region Chart\")\n\n📊 **Widget Replacement & Alternatives** - Find semantically similar alternatives when a widget needs to be replaced or improved\n\n🔍 **Content Discovery & Exploration** - Help users explore the organization's widget ecosystem by finding widgets similar to ones they're already using\n\n🏗️ **Dashboard Template & Pattern Recognition** - Suggest widgets that commonly appear together or follow similar analytical patterns\n\n📈 **Analytics Workflow Optimization** - Recommend complementary widgets that provide additional insights related to the current analysis\n\n**Features:**\n- Uses vector embeddings for semantic similarity (not just name matching)\n- Permission-aware (only returns accessible widgets)\n- Rich metadata including chart types, measures, dimensions\n- Direct navigation URLs to recommended widgets\n","tags":["Dashboard Semantic Search"],"responses":{"200":{"description":"Array of recommended widgets","schema":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["widget","dashboard"],"description":"Type of the search result"},"id":{"type":"string","description":"Unique identifier of the widget or dashboard"},"title":{"type":"string","description":"Title of the widget or dashboard"},"description":{"type":"string","description":"Description of the widget or dashboard"},"dashboardId":{"type":"string","description":"ID of the dashboard (for widget results)"},"dashboardTitle":{"type":"string","description":"Title of the dashboard (for widget results)"},"widgetType":{"type":"string","description":"Type of widget (chart, table, etc.)"},"dataSource":{"type":"string","description":"Data source identifier"},"similarity":{"type":"number","format":"float","minimum":0,"maximum":1,"description":"Similarity score between 0 and 1"},"url":{"type":"string","description":"URL to navigate to the widget or dashboard"},"metadata":{"type":"object","description":"Additional metadata about the item"}}}}},"400":{"description":"Bad request - invalid widget ID or parameters"},"403":{"description":"User does not have permission"},"500":{"description":"Internal server error"},"503":{"description":"Service unavailable - vector database is not accessible"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"body","description":"Widget recommendation request object","name":"data","required":true,"schema":{"type":"object","required":["widgetId"],"properties":{"widgetId":{"type":"string","description":"The ID of the source widget to get recommendations for","example":"widget-123"},"limit":{"type":"integer","description":"Number of recommendations to return","default":5,"minimum":1,"maximum":20}}}},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}},"/semantic-search/index-all-dashboards":{"x-swagger-router-controller":"dashboardSemanticSearch.controller.v2","x-permission-type":"data-admins-only","post":{"x-hide":false,"operationId":"indexAllDashboards","summary":"Index all existing dashboards for semantic search.","description":"Index all existing dashboards and their widgets in the vector database for semantic search capabilities.","tags":["Dashboard Semantic Search"],"responses":{"200":{"description":"Indexing started successfully","schema":{"type":"object","properties":{"message":{"type":"string","example":"Success"},"description":{"type":"string","example":"Started indexing all existing dashboards"},"dashboardsProcessed":{"type":"integer","description":"Number of dashboards processed"},"itemsIndexed":{"type":"integer","description":"Total number of items indexed (dashboards + widgets)"},"timestamp":{"type":"string","format":"date-time","description":"When the indexing was completed"}}}},"403":{"description":"User does not have permission"},"500":{"description":"Internal server error"},"503":{"description":"Service unavailable - vector database is not accessible"}},"parameters":[{"in":"header","description":"The user's API token preceded by the keyword Bearer (with space between it and the token). For more information, see API tutorial.","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},{"in":"header","description":"Used to define the Tenant ID on behalf of whom the operation will be executed","name":"x-tenant-id","required":false,"type":"string"}]}}},"definitions":{"aiSettingsBase":{"type":"object","required":["llmServices","llmTerms"],"properties":{"llmServices":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If llm is enabled."}}},"llmTerms":{"type":"object","properties":{"accepted":{"type":"boolean","description":"If llm terms are accepted."}}},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"nlqV3Enabled":{"type":"boolean","description":"If AI Assistant Nlq V3 is enabled."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behaviour on Dashboards"}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"quotaNotification":{"type":"boolean","description":"If Quota Notification is enabled."},"provider":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}},"aiSettingsRequestBody":{"allOf":[{"type":"object","required":["llmServices","llmTerms"],"properties":{"llmServices":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If llm is enabled."}}},"llmTerms":{"type":"object","properties":{"accepted":{"type":"boolean","description":"If llm terms are accepted."}}},"aiAssistant":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Dashboard Assistant is enabled."},"unified":{"type":"boolean","description":"If AI Dashboard Assistant is unified."},"nlqV3Enabled":{"type":"boolean","description":"If AI Assistant Nlq V3 is enabled."},"aiAccessControl":{"type":"string","enum":["automatically","automaticallyForOwners","manually"],"description":"Default behaviour on Dashboards"}}},"aiSemanticEnrichment":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If Semantic Enrichment is enabled."}}},"aiStudio":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If AI Studio Assistant is enabled."},"realtime":{"type":"boolean","description":"If AI Studio Assistant Realtime mode is enabled."},"usageDisplay":{"type":"boolean","description":"If AI Studio Usage Display feature is enabled."}}},"quotaNotification":{"type":"boolean","description":"If Quota Notification is enabled."},"provider":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}}},{"type":"object","properties":{"apiKey":{"type":"string"}}}]},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},"baseApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}},"notFoundApiError":{"type":"object","properties":{"error":{"allOf":[{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},{"type":"object","properties":{"resourceType":{"type":"string"},"resourceName":{"type":"string"}}}]}}},"unauthorizedApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},"badRequestApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}},"forbiddenApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}},"unprocessableEntityApiError":{"type":"object","properties":{"error":{"allOf":[{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},{"type":"object","properties":{"subErrors":{"type":"array","items":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}}}}}]}}},"tooManyRequestsApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}},"allOf":[{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},{"type":"object","properties":{"detail":{"type":"string","description":"Additional details about the rate limit error"}}}]}}},"internalServerApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}},"gatewayTimeouError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"status":{"type":"integer"},"httpMessage":{"type":"string"}}}}},"deploymentId":{"type":"object","required":["deploymentId"],"properties":{"deploymentId":{"type":"string","description":"Current deploymentId"},"alias":{"type":"string","description":"DeploymentId alias"}}},"updateDeploymentId":{"type":"object","required":["alias"],"properties":{"alias":{"type":"string","description":"Alias for deployment"}}},"DataModelAnalyticalEngineOptions":{"type":"object","description":"Analytical Engine options","properties":{"queryAeMode":{"type":"string","enum":["SYSTEM","LEGACY","AE_ONLY","NEW_THEN_OLD","OLD_ONLY"],"description":"Defines the engine behavior for query execution:\n- SYSTEM: Follows the system's default behavior.\n- LEGACY: Falls back to the old translator if the Analytical Engine fails.\n- AE_ONLY: Uses only the Analytical Engine (New Translator).\n- NEW_THEN_OLD: Falls back to the old translator if the Analytical Engine fails.\n- OLD_ONLY: Uses only the Old Translator."},"customTranslationMode":{"type":"string","enum":["SYSTEM","OT","AE"],"description":"Defines the engine used for custom translation during the build process:\n- SYSTEM: Follows the system's default behavior.\n- OT: Uses the old translator.\n- AE: Uses the new Analytical Engine (New Translator)."},"generateDependenciesMode":{"type":"string","enum":["SYSTEM","OT","AE"],"description":"Defines the engine to determine dependencies between tables:\n- SYSTEM: Follows the system's default behavior.\n- OT: Uses the old translator.\n- AE: Uses the new Analytical Engine (New Translator)."}}},"AiAccessControlSettingsInput":{"type":"object","description":"AI Assistant settings input for a datamodel","properties":{"availableForAnalyticsAssistant":{"type":"boolean","description":"Whether the datamodel is available for AI Assistant features"},"availableForStudioAssistant":{"type":"boolean","description":"Whether the datamodel is available for AI Studio features"},"availableForSemanticEnrichment":{"type":"boolean","description":"Whether the datamodel is available for Semantic Indexing features"}}},"AiAccessControlSettingsResponse":{"type":"object","description":"Response after updating AI Assistant settings","properties":{"success":{"type":"boolean","description":"Whether the update was successful"},"data":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","description":"The datamodel OID"},"aiAccessController":{"type":"object","properties":{"availableForAnalyticsAssistant":{"type":"boolean","description":"Whether the datamodel is available for AI Assistant features"},"availableForStudioAssistant":{"type":"boolean","description":"Whether the datamodel is available for AI Studio features"},"availableForSemanticEnrichment":{"type":"boolean","description":"Whether the datamodel is available for Semantic Indexing features"}}}}}}},"Datamodel":{"type":"object","properties":{"title":{"type":"string","description":"Datamodel title"},"description":{"type":"string","description":"Optional Datamodel description text"},"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Datamodel"},"type":{"type":"string","description":"Datamodel type; `extract` type Datamodels are formerly known as Elasticube","enum":["extract","live"]},"created":{"type":"string","format":"date-time","description":"Datetime of Datamodel creation"},"schemaLastModified":{"type":"string","format":"date-time","description":"Datetime of last change to Datamodel Schema"},"lastBuildTime":{"type":"string","format":"date-time","description":"Datetime of the last build attempt of the Datamodel\nApplies only to `extract` type Datamodels"},"lastSuccessfulBuildTime":{"type":"string","format":"date-time","description":"Datetime of last successful build of Datamodel\nApplies only to `extract` type Datamodels"},"schema":{"type":"object","description":"Will only be returned if `schema=true` query parameter is present.\n\nFor detailed object model information, please see the `GET /schema` endpoint."},"state":{"type":"object","description":"Current state of the Datamodel","properties":{"status":{"type":"string","description":"Datamodel's current status","enum":["draft","building","running","stopping","stopped","invalid"]},"uptime":{"type":"string","description":"Time since Datamodel was made queriable\nUsing 'd.hh:mm:ss' format","pattern":"^\\d+\\.\\d{2}:\\d{2}:\\d{2}"},"isRestarting":{"type":"boolean","description":"True when Datamodel is being restarted"},"isBuilding":{"type":"boolean","description":"True when Datamodel is building (applies only to Extract type)"},"isRunning":{"type":"boolean","description":"True when the Datamodel can be queried"},"isStopping":{"type":"boolean","description":"True when the Datamodel is being stopped"},"isInvalid":{"type":"boolean","description":"True when a build resulted in a corrupt/invalid Datamodel"},"canStart":{"type":"boolean","description":"True when the Datamodel is stopped and can be started"}}},"buildInfo":{"type":"object","description":"Information about the Datamodel last build, applies only to `extract` type Datamodels","properties":{"lastFullBuildTime":{"type":"string","format":"date-time","description":"Datetime of most recent full build"},"lastDeltaBuildTime":{"type":"string","format":"date-time","description":"Datetime of most recent accumulative/partial build"},"lastScheduledBuildTime":{"type":"string","format":"date-time","description":"Datetime of most recent scheduled build"},"lastFullBuildDuration":{"type":"string","description":"Duration of most recent full build, in seconds"},"lastDeltaBuildDuration":{"type":"string","description":"Duration of most recent accumulative/partial build, in seconds"},"lastScheduledBuildDuration":{"type":"string","description":"Duration of most recent scheduled build, in seconds"},"nextScheduledBuildTime":{"type":"string","format":"date-time","description":"Datetime of next scheduled build"},"buildId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID of the most recent Build Process"},"lastBuildSucceeded":{"type":"boolean","description":"True if the most recent build completed successfully"}}},"storage":{"type":"object","description":"Information about stored Datamodel data - applies only to `extract` type Datamodels","properties":{"dataSize":{"type":"integer","description":"Datamodel Data directory size, in MBs"},"dBFarmDirectory":{"type":"string","description":"Filesystem path to Datamodel Data directory"}}}}},"ElasticubeImportInput":{"type":"object","properties":{"title":{"type":"string","description":"Datamodel title (name)","example":"My Datamodel"},"type":{"description":"Datamodel type","$ref":"#/definitions/ElasticubeType"},"relationType":{"description":"Default relation type for the Datamodel.\n\n- `extract` type Datamodels have `regular` relations by default.\n\n- `live` type Datamodels have `direct` relations by default.","$ref":"#/definitions/RelationType"},"relations":{"type":"array","description":"Relations defined in the Datamodel Schema","items":{"$ref":"#/definitions/RelationImportModelInput"}},"datasets":{"type":"array","description":"Datasets defined in the Datamodel Schema","items":{"$ref":"#/definitions/DatasetImportModelInput"}}}},"ElasticubeJsonImportInput":{"type":"object","properties":{"title":{"type":"string","description":"Datamodel title (name)","example":"My Datamodel"},"type":{"description":"Datamodel type","$ref":"#/definitions/ElasticubeType"},"relationType":{"description":"Default relation type for the Datamodel.\n\n- `extract` type Datamodels have `regular` relations by default.\n\n- `live` type Datamodels have `direct` relations by default.","$ref":"#/definitions/RelationType"},"relations":{"type":"array","description":"Relations defined in the Datamodel Schema","items":{"$ref":"#/definitions/RelationImportModelInput"}},"datasets":{"type":"array","description":"Datasets defined in the Datamodel Schema","items":{"$ref":"#/definitions/DatasetJsonImportModelInput"}}}},"ElasticubeType":{"type":"string","description":"Datamodel type; `extract` type Datamodels are formerly known as Elasticube","default":"extract","enum":["live","extract"]},"RelationType":{"type":"string","description":"Default relation type for the Datamodel.\n\n- `extract` type Datamodels have `regular` relations by default.\n\n- `live` type Datamodels have `direct` relations by default.","enum":["direct","regular"]},"DatamodelSchemaInput":{"type":"object","properties":{"title":{"type":"string","description":"Datamodel title (name)","example":"My Datamodel"},"server":{"type":"string","description":"*Legacy*: Hostname of server on which the Datamodel is created.\n**Only applies to Windows versions.**\nDefaults to `LocalHost`.","example":"LocalHost","default":"LocalHost"},"type":{"type":"string","description":"Datamodel type; `extract` type Datamodels are formerly known as Elasticube","default":"extract","enum":["live","extract"]}},"required":["title"]},"DatamodelSchemaOutput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Datamodel"},"title":{"type":"string","description":"Datamodel title (name)"},"server":{"type":"string","description":"*Legacy*: Hostname of server on which the Datamodel is created.\n**Only applies to Windows versions.**\nDefaults to `LocalHost`.","example":"LocalHost","default":"LocalHost"},"serverId":{"type":"string","description":"*Legacy*: Unique ID of server on which the Datamodel is created.\n**Only applies to Windows versions.**","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"shares":{"type":"array","description":"Array of Users/Groups with access to the Datamodel","items":{"$ref":"#/definitions/Party"}},"lastUpdated":{"type":"string","format":"date-time","description":"Datetime of most recent schema update"},"lastBuildTime":{"type":"string","format":"date-time","description":"Datetime of most recent schema build attempt (for `extract` type Datamodels)"},"lastSuccessfulBuildTime":{"type":"string","format":"date-time","description":"Datetime of most recent schema build success (for `extract` type Datamodels)"},"lastPublishTime":{"type":"string","format":"date-time","description":"Datetime of most recent schema publish (for `live` type Datamodels)"},"type":{"type":"string","description":"Datamodel type; `extract` type Datamodels are formerly known as Elasticube","enum":["extract","custom"]},"creator":{"description":"User that created the Datamodel Schema","$ref":"#/definitions/Party"},"datasets":{"type":"array","description":"Datasets defined in the Datamodel Schema","items":{"$ref":"#/definitions/DatasetOutput"}},"relations":{"type":"array","description":"Relations defined in the Datamodel Schema","items":{"$ref":"#/definitions/RelationOutput"}},"relationType":{"type":"string","description":"Default relation type for the Datamodel.\n\n- `extract` type Datamodels have `regular` relations by default.\n\n- `live` type Datamodels have `direct` relations by default.","enum":["direct","regular"]}}},"DatasetInput":{"type":"object","properties":{"name":{"type":"string","description":"Dataset name","example":"my-dataset-1"},"type":{"type":"string","description":"Dataset type:\n\n- `live`: live connection dataset\n\n- `extract`: formerly known as 'Elasticube'\n\n- `custom` for custom SQL expression-based tables","default":"extract","enum":["live","extract","custom","custom_code"]},"connection":{"description":"Connection properties to data source - not applicable in `custom` type Datasets.\n\nAs the properties for connections depend on the connector used, the specification here is only partial.\n\nPlease refer to the online API refence for further information about available connectors.","$ref":"#/definitions/ConnectionInput"},"liveQuerySettings":{"type":"object","properties":{"timeout":{"type":"integer","default":60000,"description":"Query timeout in Milliseconds\n**applicable only to Live connections**"},"autoRefresh":{"type":"boolean","default":false,"description":"Query auto refresh\n**applicable only to Live connections**"},"refreshRate":{"type":"integer","default":30000,"description":"Query refresh rate in Milliseconds\n**applicable only to Live connections**"},"resultLimit":{"type":"integer","default":5000,"description":"Maximum number of rows to retrieve in each query\n**applicable only to Live connections**"}}},"database":{"type":"string","description":"database of the dataset/ connection"},"schemaName":{"type":"string","description":"schema of the dataset/ connection"}},"required":["name","type"]},"DatasetImportModelInput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Dataset"},"name":{"type":"string","description":"Dataset name","example":"my-dataset-1"},"type":{"type":"string","description":"Dataset type:\n\n- `live`: live connection dataset\n\n- `extract`: formerly known as 'Elasticube'\n\n- `custom` for custom SQL expression-based tables","default":"extract","enum":["live","extract","custom"]},"liveQuerySettings":{"type":"object","properties":{"timeout":{"type":"integer","default":60000,"description":"Query timeout in Milliseconds\n**applicable only to Live connections**"},"autoRefresh":{"type":"boolean","default":false,"description":"Query auto refresh\n**applicable only to Live connections**"},"refreshRate":{"type":"integer","default":30000,"description":"Query refresh rate in Milliseconds\n**applicable only to Live connections**"},"resultLimit":{"type":"integer","default":5000,"description":"Maximum number of rows to retrieve in each query\n**applicable only to Live connections**"}}},"connection":{"description":"Connection properties to data source - not applicable in `custom` type Datasets.\n\nAs the properties for connections depend on the connector used, the specification here is only partial.\n\nPlease refer to the online API refence for further information about available connectors.","$ref":"#/definitions/ConnectionImportModelInput"},"database":{"type":"string","description":"database of the dataset/ connection"},"schemaName":{"type":"string","description":"schema of the dataset/ connection"}},"required":["name","type"]},"DatasetJsonImportModelInput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Dataset"},"name":{"type":"string","description":"Dataset name","example":"my-dataset-1"},"liveQuerySettings":{"type":"object","properties":{"timeout":{"type":"integer","default":60000,"description":"Query timeout in Milliseconds\n**applicable only to Live connections**"},"autoRefresh":{"type":"boolean","default":false,"description":"Query auto refresh\n**applicable only to Live connections**"},"refreshRate":{"type":"integer","default":30000,"description":"Query refresh rate in Milliseconds\n**applicable only to Live connections**"},"resultLimit":{"type":"integer","default":5000,"description":"Maximum number of rows to retrieve in each query\n**applicable only to Live connections**"}}},"connection":{"description":"Connection properties to data source - not applicable in `custom` type Datasets.\n\nAs the properties for connections depend on the connector used, the specification here is only partial.\n\nPlease refer to the online API refence for further information about available connectors.","$ref":"#/definitions/ConnectionJsonImportModelInput"}},"required":["name","type"]},"DatasetUpdate":{"type":"object","properties":{"name":{"type":"string","description":"Dataset name","example":"my-dataset-1"},"database":{"type":"string","description":"database of the dataset/ connection"},"schemaName":{"type":"string","description":"schema of the dataset/ connection"},"type":{"type":"string","description":"Dataset type:\n\n- `live`: live connection dataset\n\n- `extract`: formerly known as 'Elasticube'\n\n- `custom` for custom SQL expression-based tables","default":"extract","enum":["live","extract","custom"]},"liveQuerySettings":{"type":"object","properties":{"timeout":{"type":"integer","default":60000,"description":"Query timeout in Milliseconds\n**applicable only to Live connections**"},"autoRefresh":{"type":"boolean","default":false,"description":"Query auto refresh\n**applicable only to Live connections**"},"refreshRate":{"type":"integer","default":30000,"description":"Query refresh rate in Milliseconds\n**applicable only to Live connections**"},"resultLimit":{"type":"integer","default":5000,"description":"Maximum number of rows to retrieve in each query\n**applicable only to Live connections**"}}},"connection":{"description":"Connection properties to data source - not applicable in `custom` type Datasets.\n\nAs the properties for connections depend on the connector used, the specification here is only partial.\n\nPlease refer to the online API refence for further information about available connectors.","$ref":"#/definitions/ConnectionInput"}}},"DatasetOutput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Dataset"},"name":{"type":"string","description":"Dataset name","example":"my-dataset-1"},"type":{"type":"string","description":"Dataset type:\n\n- `live`: live connection dataset\n\n- `extract`: formerly known as 'Elasticube'\n\n- `custom` for custom SQL expression-based tables","default":"extract","enum":["live","extract","custom"]},"liveQuerySettings":{"type":"object","properties":{"timeout":{"type":"integer","default":60000,"description":"Query timeout in Milliseconds\n**applicable only to Live connections**"},"autoRefresh":{"type":"boolean","default":false,"description":"Query auto refresh\n**applicable only to Live connections**"},"refreshRate":{"type":"integer","default":30000,"description":"Query refresh rate in Milliseconds\n**applicable only to Live connections**"},"resultLimit":{"type":"integer","default":5000,"description":"Maximum number of rows to retrieve in each query\n**applicable only to Live connections**"}}},"connection":{"description":"Connection properties to data source - not applicable in `custom` type Datasets.\n\nAs the properties for connections depend on the connector used, the specification here is only partial.\n\nPlease refer to the online API refence for further information about available connectors.","$ref":"#/definitions/ConnectionOutput"}}},"ConnectionInput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the connection object"}},"required":["oid"]},"ConnectionImportModelInput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the connection object","example":"52aabb44-c652-4ab4-88b0-58d4f640dc76"},"name":{"type":"string","description":"Connection name","example":"CSV -b776fd81-c97872091-8"},"description":{"type":"string","description":"Connection description","example":"Connection to Redshift staging DB used for internal purposes"},"id":{"type":"string","description":"Connection ID","example":"5d6bac7210d5b135681341e7"},"provider":{"type":"string","description":"Connector type identifier\nSee [Available connectors]","example":"csv"},"parameters":{"type":"string","description":"Connector-specific parameters\nSee [Available connectors](https://developer.sisense.com/guides/restApi/v2/connectors.html)","example":"eyJlbmNyeXB0ZWREYXRhIjp7ImNpcGhlcnRleHQiOiIzSXZ0S3Z6SVdoNG1uY3JsMjRIdUFqeTA4QUdqL0hUWkIzRXVNS3BwMy9FYTZoMkNZU3RsQmpPWHRpR0h1VXBzUFdxaXR0eVBwUzl3MjJOWVVSbDNRczJiOXFiWUt1SWUrYnByQ29pWktadkV4bC84MmFXYUh1bFRLajRrdWhhNEZDSzJWRXc4NC83azlVZjJuUDlYMGR5OE12dFIzT0NLZlZRellPc3pXUVJQYWpMOVJ0VXFyNUZzc2pma3NIYXZnSEEyVnRTS3hRMHRzOUlqMXA5VzJBbXhUY0F5N3dpalRvQUc0THZmRDRCUzBrT3RwZVBmOGQzeGNwRU4xNFJvMjY1WCtIcnlFLzgzN29ydHRrbWhSbGpydmMrMmwvb0Z4WllMWkxyVzJqSHdLVHh3N0M2cmV2alJqQndySXJBZSIsIm5vbmNlIjoiay82eTdHaXJFZStwU3VFREp0YnVrdz09In0sImVuY3J5cHRpb25NZXRhZGF0YSI6eyJwcm92aWRlciI6IkxPQ0FMIiwia2V5SWQiOiIxMjMiLCJlbmNyeXB0aW9uVGltZSI6IjIwMjUtMDctMzBUMTQ6NDM6MzMuNzk0NzI0MDg5WiJ9fQ=="},"schema":{"type":"string","description":"Name of the database schema to connect to\n\nWith RDBMS this is usually the database name such as `Northwind`, with files (csv/excel) it is the file name","example":"Northwind"},"fileName":{"type":"string","description":"Filename for file-based connectors","example":""},"globalTableConfigOptions":{"type":"object","description":"Global table configuration options","example":{}},"supportedModelTypes":{"type":"array","items":{"type":"string"},"description":"Array of supported model types","example":["EXTRACT"]}}},"ConnectionOutput":{"type":"object","properties":{"id":{"type":"string","description":"Connection ID","example":"5d6bac7210d5b135681341e7"},"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the connection object","example":"52aabb44-c652-4ab4-88b0-58d4f640dc76"},"name":{"type":"string","description":"Connection name","example":"CSV -b776fd81-c97872091-8"},"description":{"type":"string","description":"Connection description","example":""},"provider":{"type":"string","description":"Connector type identifier\nSee [Available connectors](https://developer.sisense.com/guides/restApi/v2/connectors.html)","example":"csv"},"parameters":{"type":"object","description":"Connector-specific parameters\nSee [Available connectors](https://developer.sisense.com/guides/restApi/v2/connectors.html)","example":{"culture":"en-US","files":["/opt/sisense/storage/samples/Sample Lead Generation/Lead Generation.csv"],"folder":"","IsUsingDirectConnection":"false","Server":"/opt/sisense/storage/samples/Sample Lead Generation/Lead Generation.csv"}},"schema":{"type":"string","description":"Name of the database schema to connect to","example":"Northwind"},"fileName":{"type":"string","description":"Filename for file-based connectors","example":""},"uiParams":{"type":"object","description":"UI-specific parameters","example":{}},"globalTableConfigOptions":{"type":"object","description":"Connector-specific configuration applicable to all Tables in this Dataset\nSee [Available connectors](https://developer.sisense.com/guides/restApi/v2/connectors.html)"}}},"ConnectionJsonImportModelInput":{"type":"object","properties":{"oid":{"type":"string","description":"Connection oid","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}},"RelationInput":{"type":"object","properties":{"columns":{"type":"array","description":"An array of columns by which their respective tables are connected","items":{"$ref":"#/definitions/RelationFieldInput"}}},"required":["columns"]},"RelationImportModelInput":{"type":"object","properties":{"columns":{"type":"array","description":"An array of columns by which their respective tables are connected","items":{"$ref":"#/definitions/RelationFieldInput"}}},"required":["columns"]},"RelationOutput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Relation object"},"columns":{"type":"array","description":"An array of columns by which their respective tables are connected","items":{"$ref":"#/definitions/RelationFieldInput"}}},"required":["columns"]},"RelationFieldInput":{"type":"object","properties":{"dataset":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"ID of Dataset containing connected table"},"table":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"ID of connected Table"},"column":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"ID of column by which the table is connected"}},"required":["dataset","table","column"]},"TableInput":{"type":"object","properties":{"id":{"type":"string","description":"Original Table name/identifier from the datasource"},"name":{"type":"string","description":"Table name - this name will identify the table in queries"},"columns":{"type":"array","description":"Table columns","items":{"$ref":"#/definitions/ColumnInput"}},"hidden":{"description":"Hide the table - if `true` the table will be visible only in Datamodel schema editor and cannot be queried","type":"boolean","default":false},"buildBehavior":{"description":"Configuration for how the Table should be built\nOnly applies to `extract` type Datasets","$ref":"#/definitions/TableBuildBehaviorInput"},"configOptions":{"description":"Table configuration","$ref":"#/definitions/TableConfigOptionsInput"},"description":{"type":"string","description":"Textual description for the Table","example":"This is a sales table"},"tags":{"type":"array","description":"An array of labels for the Table","example":["sales","fact"],"items":{"type":"string"}},"expression":{"type":"string","description":"**Only applicable to `custom` type tables:** SQL expression"},"type":{"type":"string","description":"Table type: `base` for regular tables, `custom` for SQL expression-based tables","default":"base","enum":["base","custom"]},"customCode":{"description":"Custom Code","$ref":"#/definitions/CustomCodeInput"}},"required":["id","columns"]},"TableOutput":{"type":"object","properties":{"id":{"type":"string","description":"Original Table name/identifier from the datasource"},"name":{"type":"string","description":"Table name - this name will identify the table in queries"},"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Table"},"columns":{"type":"array","description":"Table columns","items":{"$ref":"#/definitions/ColumnOutput"}},"hidden":{"type":"boolean","description":"Hide the table - if `true` the table will be visible only in Datamodel schema editor and cannot be queried","default":false},"buildBehavior":{"$ref":"#/definitions/TableBuildBehaviorInput","description":"Configuration for how the Table should be built\nOnly applies to `extract` type Datasets"},"configOptions":{"$ref":"#/definitions/TableConfigOptionsInput","description":"Table configuration"},"description":{"type":"string","description":"Textual description for the Table","example":"This is a sales table"},"tags":{"type":"array","description":"An array of labels for the Table","example":["sales","fact"],"items":{"type":"string"}},"expression":{"type":"object","description":"**Only applicable to `custom` type tables**","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the expression\nOnly used to track changes, any update of the expression will generate a new `oid` for it"},"expression":{"type":"string","description":"Actual SQL expression"},"lastUpdated":{"type":"string","format":"date-time","description":"Datetime of most recent SQL expression change"}}},"type":{"type":"string","description":"Table type: `base` for regular tables, `custom` for SQL expression-based tables","enum":["base","custom"]},"lastUpdated":{"type":"string","format":"date-time","description":"Datetime of most recent change to Table schema"},"createdAt":{"type":"string","format":"date-time","description":"Datetime of Table schema creation"}}},"TableBuildBehaviorInput":{"type":"object","properties":{"type":{"type":"string","description":"","enum":["sync","accumulativeSync","ignoreIfExists"]},"accumulativeConfig":{"type":"object","description":"","properties":{"column":{"type":"string","description":""},"type":{"type":"string","description":"","enum":["lastStored","lastDays"]},"lastDays":{"type":"integer","description":""},"keepOnlyDays":{"type":"integer","description":""}},"required":["type","column"]}},"required":["type"]},"TableConfigOptionsInput":{"type":"object","description":"Connector-specific configuration applicable to this Table\nSee [Available connectors](https://developer.sisense.com/guides/restApi/v2/connectors.html)"},"CustomCodeInput":{"type":"object","description":"Custom code input","properties":{"noteBookId":{"type":"string","description":"notebook Id"},"language":{"type":"string","description":"Language","enum":["Python"]},"codePath":{"type":"string","description":"Code path"},"dependsOn":{"type":"array","description":"depends On","items":{"type":"object"}},"cellsDisable":{"type":"array","description":"cells Disable","items":{"type":"integer"},"example":[0]},"additionalParameters":{"type":"object","description":"additional Parameters"},"serverUrl":{"type":"string","description":"Server Url"},"timeout":{"type":"integer","description":"timeout"}}},"ColumnInput":{"type":"object","properties":{"id":{"type":"string","description":"Original Column name/ID in the data source","example":"column_name"},"name":{"type":"string","description":"Column name - this name will be used by queries","example":"Column Alias"},"type":{"type":"integer","description":"Column datatype, according to the following list:\n\n- BigInt : 0,\n\n- Binary : 1,\n\n- Bit : 2,\n\n- Char : 3,\n\n- DateTime : 4,\n\n- Decimal : 5,\n\n- Float : 6,\n\n- Image : 7,\n\n- Int : 8,\n\n- Money : 9,\n\n- NChar : 10,\n\n- NText : 11,\n\n- NVarChar : 12,\n\n- Real : 13,\n\n- UniqueIdentifier : 14,\n\n- SmallDateTime : 15,\n\n- SmallInt : 16,\n\n- SmallMoney : 17,\n\n- Text : 18,\n\n- Timestamp : 19,\n\n- TinyInt : 20,\n\n- VarBinary : 21,\n\n- VarChar : 22,\n\n- Variant : 23,\n\n- Xml : 25,\n\n- Udt : 29,\n\n- Structured : 30,\n\n- Date : 31,\n\n- Time : 32,\n\n- DateTime2 : 33,\n\n- DateTimeOffset : 34"},"size":{"type":"integer","default":0,"description":"Field size - applicalbe for field types such as `nvarchar` with predetermined field sizes"},"precision":{"type":"integer","description":"Decimal point percision - applicable for `decimal`, `float` etc. field types"},"scale":{"type":"integer","description":""},"hidden":{"type":"boolean","description":"Hide the column - if `true` the column will be visible only in Datamodel schema editor and cannot be queried","default":false},"indexed":{"type":"boolean","default":"if size < 512 OR not mentioned, then true, else false","description":"Indexed columns are stored as codes, linked to a decode table.\nUsually used for text fields with repeating values"},"isUpsertBy":{"type":"boolean","default":false,"description":"isUpsertBy columns are used for build to source data models build process"},"description":{"type":"string","description":"Column description"},"import":{"type":"boolean","default":true,"description":"When set to `false` the column will be skipped when building.\nOnly applies to `extract` type tables"},"isCustom":{"type":"boolean","default":false,"description":"`true` for SQL expression-based custom Columns"},"expression":{"type":"string","description":"**Only applicable to `custom` type columns:** SQL expression"}},"required":["id"]},"ColumnOutput":{"type":"object","properties":{"id":{"type":"string","description":"Original Column name/ID in the data source","example":"column_name"},"name":{"type":"string","description":"Column name - this name will be used by queries","example":"Column Alias"},"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Column"},"type":{"type":"integer","description":"Column datatype, according to the following list:\n\n- BigInt : 0,\n\n- Binary : 1,\n\n- Bit : 2,\n\n- Char : 3,\n\n- DateTime : 4,\n\n- Decimal : 5,\n\n- Float : 6,\n\n- Image : 7,\n\n- Int : 8,\n\n- Money : 9,\n\n- NChar : 10,\n\n- NText : 11,\n\n- NVarChar : 12,\n\n- Real : 13,\n\n- UniqueIdentifier : 14,\n\n- SmallDateTime : 15,\n\n- SmallInt : 16,\n\n- SmallMoney : 17,\n\n- Text : 18,\n\n- Timestamp : 19,\n\n- TinyInt : 20,\n\n- VarBinary : 21,\n\n- VarChar : 22,\n\n- Variant : 23,\n\n- Xml : 25,\n\n- Udt : 29,\n\n- Structured : 30,\n\n- Date : 31,\n\n- Time : 32,\n\n- DateTime2 : 33,\n\n- DateTimeOffset : 34"},"size":{"type":"integer","default":0,"description":"Field size - applicalbe for field types such as `nvarchar` with predetermined field sizes"},"precision":{"type":"integer","description":"Decimal point percision - applicable for `decimal`, `float` etc. field types"},"scale":{"type":"integer","description":""},"hidden":{"type":"boolean","description":"Hide the column - if `true` the column will be visible only in Datamodel schema editor and cannot be queried","default":false},"indexed":{"type":"boolean","default":"if size < 512 OR not mentioned, then true, else false","description":"Indexed columns are stored as codes, linked to a decode table.\nUsually used for text fields with repeating values"},"isUpsertBy":{"type":"boolean","default":false,"description":"isUpsertBy columns are used for build to source data models build process"},"description":{"type":"string","description":"Column description"},"import":{"type":"boolean","default":true,"description":"When set to `false` the column will be skipped when building.\nOnly applies to `extract` type tables"},"isCustom":{"type":"boolean","default":false,"description":"`true` for SQL expression-based custom Columns"},"expression":{"type":"object","description":"**Only applicable to `custom` type columns**","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the expression\nOnly used to track changes, any update of the expression will generate a new `oid` for it"},"expression":{"type":"string","description":"Actual SQL expression"},"lastUpdated":{"type":"string","format":"date-time","description":"Datetime of most recent SQL expression change"}}}}},"BuildInput":{"type":"object","properties":{"datamodelId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Datamodel unique ID"},"buildType":{"type":"string","description":"Type of build performed","enum":["schema_changes","by_table","full","publish"]},"rowLimit":{"type":"integer","format":"int64","description":"For `extract` type Datamodels, the maximum number of rows to import per table, if set."},"schemaOrigin":{"type":"string","description":"Which instance of the schema to build","enum":["latest","running"]}},"required":["datamodelId","buildType"]},"BuildOutput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Build Task"},"datamodelId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Datamodel unique ID"},"buildType":{"type":"string","description":"Type of build performed","enum":["schema-changes","by-table","full","publish"]},"status":{"type":"string","description":"Current status of the task","enum":["pending","building","done","cancelled","failed"]},"datamodelTitle":{"type":"string","description":"Title (name) of the Datamodel being built"},"datamodelType":{"type":"string","description":"Datamodel type","enum":["extract","live"]},"indexSize":{"type":"string","description":"Built Datamodel index size type (only applicable to `extract` type Datamodels)","enum":["short","long"]},"instanceId":{"type":"string","description":"Unique ID of physical instance performing the build task"},"schemaLastUpdate":{"type":"string","format":"date-time","description":"Datetime of last schema update being built"},"created":{"type":"string","format":"date-time","description":"Datetime of the task being created"},"started":{"type":"string","format":"date-time","description":"Datetime of the task being started"},"completed":{"type":"string","format":"date-time","description":"Datetime of the task completing/stopping/failing"},"rowLimit":{"type":"integer","format":"int64","description":"For `extract` type Datamodels, the maximum number of rows to import per table, if set."},"source":{"type":"string","description":"What triggered the build task","enum":["rest","nextecm","scheduler","cli"]}}},"BuildScheduleInput":{"type":"object","properties":{"buildType":{"type":"string","description":"What type of build to execute\n`live` Datamodels can only use `publish`","enum":["schema-changes","by-table","full","publish"]},"daysOfWeek":{"type":"array","description":"For `dow` type schedule, which days of the week build should be run","items":{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]}},"hour":{"type":"integer","description":"For `dow` type schedule, which hour of the day build should be run","format":"int32"},"intervalSeconds":{"type":"integer","description":"For `interval` type schedule, interval in seconds that build should be run on","format":"int64"},"minute":{"type":"integer","description":"For `dow` type schedule, which minute of the hour build should be run","format":"int32"},"cron":{"type":"string","description":"For `cron` type schedule, the `CRON` expression","format":"cron"},"scheduleType":{"type":"string","enum":["interval","dow","cron"]}}},"BuildScheduleOutput":{"type":"object","properties":{"oid":{"type":"string","description":"Unique ID of build schedule","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"buildType":{"type":"string","description":"What type of build to execute\n`live` Datamodels can only use `publish`","enum":["schema-changes","by-table","full","publish"]},"daysOfWeek":{"type":"array","description":"For `dow` type schedule, which days of the week build should be run","items":{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]}},"hour":{"type":"integer","description":"For `dow` type schedule, which hour of the day build should be run","format":"int32"},"intervalSeconds":{"type":"integer","description":"For `interval` type schedule, interval in seconds that build should be run on","format":"int64"},"minute":{"type":"integer","description":"For `dow` type schedule, which minute of the hour build should be run","format":"int32"},"cron":{"type":"string","description":"For `cron` type schedule, the `CRON` expression","format":"cron"},"scheduleType":{"type":"string","enum":["interval","dow","cron"]}}},"Node":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID allocated to the Node"},"name":{"type":"string","example":"node1","description":"Name of the node"},"active":{"type":"boolean","description":"Indicates whether the Node is an active Node within the Cluster","example":true},"amountOfCpu":{"type":"integer","description":"Total number of CPU cores on the Node","example":8},"amountOfRamInMb":{"type":"integer","description":"Total MBs of RAM on the Node","example":16040},"architecture":{"type":"string","description":"Node's CPU architecture","example":"amd64","enum":["amd64"]},"containerRuntimeVersion":{"type":"string","description":"Container Runtime version installed on the Node","example":"docker://18.6.1"},"hostName":{"type":"string","description":"Node hostname or DNS address.","example":"sisense.example.com"},"hostIp":{"type":"string","description":"Node IPv4 Address","pattern":"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$","example":"10.0.0.1"},"kernelVersion":{"type":"string","description":"OS kernel version installed on the Node","example":"4.15.0-50-generic"},"kubeProxyVersion":{"type":"string","description":"Kubernetes Proxy version installed on the Node","example":"v1.13.4"},"kubeletVersion":{"type":"string","description":"Kubernetes Kubelet version installed on the Node","example":"v1.13.4"},"nodeRoles":{"type":"array","description":"An array of roles associated with the Node","items":{"type":"string","enum":["infra","application","build","query"]}},"operatingSystem":{"type":"string","description":"OS type installed on the Node","example":"linux","enum":["linux"]},"osImage":{"type":"string","description":"OS version installed on the Node","example":"Ubuntu 18.04.2 LTS"}}},"DatamodelInstance":{"type":"object","properties":{"datamodelId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Datamodel"},"datamodelTitle":{"type":"string","description":"Datamodel title","example":"Sample ECommerce"},"buildId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID of the most recent Build Process that created/updated this instance"},"buildTime":{"type":"string","format":"date-time","description":"Datetime of the most recent Build Process that created/updated this instance","example":"2019-07-15T15:17:03Z"},"creationTime":{"type":"string","format":"date-time","description":"Datetime of Instance creation","example":"2019-07-15T15:17:03Z"},"memoryMb":{"type":"integer","format":"double","description":"MBs of RAM currently consumed by the Instance","example":150},"mode":{"type":"string","description":"Which mode the Instance is operating in currently","enum":["build","query"]},"nodeId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID of the Node hosting this Instance"},"podId":{"type":"string","description":"Unique ID of the Kubernetes Pod running this Instance","example":"ec-ec2-1b5ef56e-8add-4eb3-b-78948dcfc9-k7gxh"},"status":{"type":"string","description":"Current status of this Instance","enum":["pending","running","succeeded","failed","unknown"]}}},"DataGroupInput":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Data Group name","example":"datagroup-1"},"default":{"type":"boolean","default":false,"description":"`true` for the default Data Group.\nOnly one default Data Group can exist at any given time"},"routingPolicy":{"type":"string","description":"Method by which queries are distributed within the Data Group","default":"round-robin","enum":["round-robin"]},"buildConnectorRunningMode":{"type":"string","description":"Connectors mode","default":"system-connectors","enum":["system-connectors","internal-connectors"]},"indexSize":{"type":"string","description":"Short/Long Index mode","default":"short","enum":["short","long"]},"recyclerEnabled":{"type":"boolean","default":true,"description":"Is 'Sisense Recycler' caching enabled"},"buildNodeResourceAllocation":{"description":"Resource allocation rules for Build Nodes in the Data Group","$ref":"#/definitions/NodeResourceAllocation"},"queryNodeResourceAllocation":{"description":"Resource allocation rules for Query Nodes in the Data Group","$ref":"#/definitions/NodeResourceAllocation"},"queryQualityOfService":{"type":"object","description":"QoS configuration for Query Nodes in the Data Group","properties":{"queryTimeout":{"type":"integer","description":"Query timeout in Seconds","minimum":1,"default":300},"concurrentQueries":{"type":"integer","description":"Maximum concurrent queries per Datamodel in the Data Group","default":8,"minimum":1},"replicaScaleMax":{"type":"integer","description":"Maximum physical instances per Datamodel in the Data Group","default":1,"minimum":1},"replicaScaleMin":{"type":"integer","description":"Minimum physical instances per Datamodel in the Data Group","default":1,"minimum":1}}},"queryNodes":{"type":"array","description":"Array of Node IDs associated with the Data Group as Query Nodes","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"buildNodes":{"type":"array","description":"Array of Node IDs associated with the Data Group as Build Nodes","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}}}},"DataGroupOutput":{"type":"object","properties":{"oid":{"type":"string","description":"Unique ID allocated to the Data Group","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"name":{"type":"string","description":"Data Group name","example":"datagroup-1"},"default":{"type":"boolean","description":"`true` for the default Data Group.\nOnly one default Data Group can exist at any given time"},"routingPolicy":{"type":"string","description":"Method by which queries are distributed within the Data Group","enum":["round-robin"]},"buildConnectorRunningMode":{"type":"string","description":"Connectors mode","enum":["system-connectors","internal-connectors"]},"indexSize":{"type":"string","description":"Short/Long Index mode","enum":["short","long"]},"recyclerEnabled":{"type":"boolean","description":"Is 'Sisense Recycler' caching enabled"},"datamodels":{"type":"array","description":"Array of Datamodel IDs associated with the Data Group","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"buildNodeResourceAllocation":{"description":"Resource allocation rules for Build Nodes in the Data Group","$ref":"#/definitions/NodeResourceAllocation"},"queryNodeResourceAllocation":{"description":"Resource allocation rules for Query Nodes in the Data Group","$ref":"#/definitions/NodeResourceAllocation"},"queryQualityOfService":{"type":"object","description":"QoS configuration for Query Nodes in the Data Group","properties":{"queryTimeout":{"type":"integer","description":"Query timeout in Seconds"},"concurrentQueries":{"type":"integer","description":"Maximum concurrent queries per Datamodel in the Data Group","format":"int32"},"replicaScaleMax":{"type":"integer","description":"Maximum physical instances per Datamodel in the Data Group","format":"int32"},"replicaScaleMin":{"type":"integer","description":"Minimum physical instances per Datamodel in the Data Group","format":"int32"}}},"queryNodes":{"type":"array","description":"Array of Node IDs associated with the Data Group as Query Nodes","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"buildNodes":{"type":"array","description":"Array of Node IDs associated with the Data Group as Build Nodes","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}}}},"NodeResourceAllocation":{"type":"object","properties":{"coresUsagePercentage":{"type":"integer","description":"Limit threads per Datamodel as percentage of CPU capacity","minimum":0,"maximum":100,"default":50},"limitCpuCores":{"type":"integer","description":"Limit CPU core utilization per Datamodel\n`-1` for system default","default":-1},"limitRamSizeInMB":{"type":"integer","description":"Limit MBs of RAM utilization per Datamodel\n`-1` for system default","default":-1},"requiredCpuCores":{"type":"integer","description":"Minimum available PU cores required per Datamodel\n`-1` for system default","default":-1},"requiredRamSizeInMB":{"type":"integer","description":"Minimum available MBs of RAM required per Datamodel\n`-1` for system default","default":-1}}},"Party":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the User/Group"},"type":{"type":"string","description":"Party type - user group or individual user","enum":["user","group"]}}},"AsyncExportRequest":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Export task"},"datamodelId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID of Datamodel to export"},"type":{"type":"string","description":"What should be exported","enum":["schema-latest","schema-running","full"]},"status":{"type":"string","description":"Status of export process","enum":["exporting","done","failed"]},"local":{"type":"object","description":"If this property is present, export will be to a local file","properties":{"path":{"type":"string","description":"Local file path to store export to"},"conflictBehavior":{"type":"string","description":"What to do if the file already exists","enum":["replace","rename","fail"]}}}}},"AsyncImportRequest":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Import task"},"datamodelId":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID of Datamodel to import into.\nIf provided, Datamodel title is ignored.\nIf not provided, a new Datamodel will be created"},"newTitle":{"type":"string","description":"When a `datamodelId` is not provided to create a new Datamodel, this property can be used to give the new Datamodel a specific title.\n\nIf `datamodelId` is provided together with `newTitle` an error will occur."},"type":{"type":"string","description":"What should be imported","enum":["schema","full"]},"status":{"type":"string","description":"Status of import process","enum":["importing","done","failed"]},"local":{"type":"object","description":"If this property is present, import will be from local file","properties":{"path":{"type":"string","description":"Local file path to import from"}}}}},"Error":{"type":"object","required":["title","status"],"properties":{"type":{"type":"string","example":"https://errors.sisense.dev/http/some-error","description":"When applicable, this URI will can be used to identify the specific error and find additional information about it."},"title":{"type":"string","example":"Some error","description":"A short name for the error."},"status":{"type":"integer","example":400,"description":"The HTTP code of the response."},"sub":{"type":"integer","example":40010,"description":"When applicable, a specific error sub-code."},"detail":{"type":"string","example":"Some error has occurred with your request and this is a detailed message about it","description":"A detailed error message."},"instance":{"type":"string","example":"/api/users/12345","description":"When applicable, a reative URI of affected/offensive resource."},"logref":{"type":"string","description":"When applicable, a reference to the log entry representing the error's occurrence."}}},"TableSchemaColumn":{"type":"object","properties":{"columnName":{"type":"string","description":"column name"},"columnOrder":{"type":"integer","description":"column order"},"dbType":{"type":"integer","description":"column dbType"},"precision":{"type":"integer","description":"column precision"},"scale":{"type":"integer","description":"column scale"},"size":{"type":"integer","description":"column size"}}},"TableSchemaRelation":{"type":"object","properties":{"childColumns":{"type":"array","items":{"type":"string"}},"childSchema":{"type":"string"},"childTable":{"type":"string"},"fkName":{"type":"string"},"parentColumns":{"type":"array","items":{"type":"string"}},"parentSchema":{"type":"string"},"parentTable":{"type":"string"}}},"TableSchema":{"type":"object","properties":{"catalog":{"type":"string"},"columns":{"type":"array","items":{"$ref":"#/definitions/TableSchemaColumn"}},"relations":{"type":"array","items":{"$ref":"#/definitions/TableSchemaRelation"}},"schemaName":{"type":"string"},"tableName":{"type":"string"},"tableType":{"type":"string"}}},"DatamodelPerspectiveInput":{"type":"object","required":["name","tenantId","parentOid"],"properties":{"name":{"type":"string","example":"New Perspective","description":"The perspective name"},"parentOid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"The parent ID this perspective belongs to"},"description":{"type":"string","example":"Perspective description","description":"The perspective's description"},"tables":{"type":"array","description":"A list of all tables that should be included in the perspective","items":{"$ref":"#/definitions/TablePerspective"}},"relations":{"type":"array","description":"The perspective relations oid list to use from the datamodel","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"shares":{"type":"array","description":"A list of users and groups IDs the perspective is shared with","items":{"type":"object","properties":{"type":{"type":"string","enum":["user","group"]},"id":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}}}},"tenantId":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The tenant ID this perspective belongs to"}}},"DatamodelPerspectiveUpdateInput":{"type":"object","properties":{"name":{"type":"string","example":"New Perspective","description":"The perspective name"},"tables":{"type":"array","description":"A list of all tables that should be included in the perspective","items":{"$ref":"#/definitions/TablePerspective"}},"relations":{"type":"array","description":"The perspective relations oid list to use from the datamodel","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"shares":{"type":"array","description":"A list of users and groups IDs the perspective is shared with","items":{"type":"object","properties":{"type":{"type":"string","enum":["user","group"]},"id":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}}}}}},"DatamodelPerspectiveOutput":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Perspective object"},"parentOid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Unique ID assigned to the Perspective parent object"},"name":{"type":"string","example":"New Perspective","description":"The perspective name"},"datamodelOid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"The datamodel ID this perspective belongs to"},"tables":{"type":"array","description":"A list of all tables that should be included in the perspective","items":{"$ref":"#/definitions/TablePerspective"}},"relations":{"type":"array","description":"The perspective relations oid list to use from the datamodel","items":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}},"shares":{"type":"array","description":"A list of users and groups IDs the perspective is shared with","items":{"type":"object","properties":{"type":{"type":"string","enum":["user","group"]},"id":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"}}}},"tenantId":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The tenant ID this perspective belongs to"},"lastUpdated":{"type":"string","format":"date-time","description":"Datetime of most recent perspective update"},"creator":{"type":"object","description":"User that created the Perspective","properties":{"firstName":{"type":"string","description":"creator first name"},"lastName":{"type":"string","description":"creator last name"},"id":{"type":"string","description":"Unique ID assigned to the Datamodel"}}}}},"PerspectivesAndRevisionsOutput":{"type":"object","properties":{"perspectives":{"type":"array","items":{"$ref":"#/definitions/DatamodelPerspectiveOutput"}},"revisions":{"type":"array","items":{"$ref":"#/definitions/RevisionOutput"}}}},"TablePerspective":{"type":"object","required":["oid","diffType"],"properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"The table oid"},"title":{"type":"string","example":"new name","description":"The table alias name"},"displayName":{"type":"string","example":"display name","description":"The table display name"},"diffType":{"type":"string","enum":["include","exclude"],"description":"If to exclude/include columns from the columnsDiff list"},"tags":{"type":"array","description":"A list of table tags","items":{"type":"string","description":"tag name"}},"description":{"type":"string","description":"A table description"},"columnsDiff":{"type":"array","description":"A list of all columns oid to include/exclude from the table","items":{"type":"object","properties":{"oid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"The column oid"},"displayName":{"type":"string","example":"display name","description":"The column display name"},"semanticIndex":{"type":"boolean","example":"Semantic Index","description":"The column Semantic Index"},"title":{"type":"string","example":"New name","description":"The column alias name"},"enabled":{"type":"boolean","example":"true","description":"is the column enabled or not (vary by table type)"},"description":{"type":"string","description":"A column description"}}}}}},"RevisionOutput":{"type":"object","properties":{"createdTime":{"type":"string","description":"Revision creation time"},"creator":{"type":"string","description":"Revision creator"},"datamodelOid":{"type":"string","description":"root model oid"},"description":{"type":"string","description":"description"},"fiscalYear":{"type":"string","description":"fiscal year"},"lastBuildTime":{"type":"string","description":"last build time"},"lastUpdated":{"type":"string","description":"last update time"},"name":{"type":"string","description":"name"},"oid":{"type":"string","description":"oid"},"parentOid":{"type":"string","description":"parent model oid"},"server":{"type":"string","description":"server"},"title":{"type":"string","description":"title"},"relations":{"type":"array","description":"Relations defined in the Datamodel Schema","items":{"$ref":"#/definitions/RelationImportModelInput"}},"datasets":{"type":"array","description":"Datasets defined in the Datamodel Schema","items":{"$ref":"#/definitions/DatasetOutput"}}}},"PublishSemanticPropertiesOutput":{"type":"object","properties":{"succeeded":{"type":"array","items":{"$ref":"#/definitions/PublishSuccessItem"}},"failed":{"type":"array","items":{"$ref":"#/definitions/PublishFailedItem"}}}},"PublishSuccessItem":{"type":"object","properties":{"perspectiveOid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Published perspective ID"}},"required":["perspectiveOid"]},"PublishFailedItem":{"type":"object","properties":{"perspectiveOid":{"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$","description":"Perspective ID that was not published"},"error":{"type":"string","description":"Failure reason","enum":["PERSPECTIVE_NOT_BUILT","BUILD_STATUS_UNDETERMINED"]}},"required":["perspectiveOid","error"]},"auditFile":{"title":"auditFile","type":"object","properties":{"file":{"type":"string","description":"audit log filename"},"valid":{"type":"boolean","description":"indicates whether the audit log file is valid"},"filePath":{"type":"string","description":"audit log file path"}}},"auditEvent":{"title":"auditEvent","type":"object","required":["entity","action","event"],"properties":{"entity":{"type":"string","description":"The entity being audited (e.g., 'user', 'dashboard', 'datamodel')"},"action":{"type":"string","description":"The action performed (e.g., 'login', 'execute', 'create', 'update', 'delete')"},"event":{"description":"Event details and metadata - can be object, array, or any data"},"requester":{"type":"string","description":"Information about who requested the action (required except for 'login' or 'execute' actions)"},"operation":{"type":"string","description":"Optional operation identifier"}}},"auditEventResponse":{"title":"auditEventResponse","type":"object","properties":{"success":{"type":"boolean","description":"Indicates whether the audit event was sent successfully"},"message":{"type":"string","description":"Response message"}}},"ok":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}},"mongoObjectId":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"allConnections":{"type":"object","properties":{"_id":{"type":"string"},"supportedModelTypes":{"type":"object"},"provider":{"type":"string"},"parameters":{"type":"object"},"ownerId":{"type":"string"},"oid":{"type":"string"},"name":{"type":"string"},"lastName":{"type":"string"},"firstName":{"type":"string"},"lastModified":{"type":"string"},"created":{"type":"string"},"createdByUser":{"type":"boolean"},"enabled":{"type":"boolean"}}},"connectionDocument":{"type":"object","required":["connectionOidToDelete","newConnectionOidToReplace"],"properties":{"connectionOidToDelete":{"type":"string"},"newConnectionOidToReplace":{"type":"string"}}}},"parameters":{"fields":{"name":"fields","in":"query","description":"Whitelist of fields to return for each document. fields Can also define which fields to exclude by prefixing field names with `-`","required":false,"type":"string"},"sort":{"name":"sort","in":"query","description":"Field by which the results should be sorted. Ascending by default, descending if prefixed by `-`","required":false,"type":"string"},"skip":{"name":"skip","in":"query","description":"Number of results to skip from the start of the data set. skip is to be used with the `limit` parameter for paging","required":false,"type":"integer","minimum":0},"limit":{"name":"limit","in":"query","description":"How many results should be returned. limit is to be used with the `skip` parameter for paging","required":false,"type":"integer","minimum":1},"expand":{"name":"expand","in":"query","description":"List of fields that should be expanded (substitures their IDs with actual objects). May be nested using the `resource.subResource` format","required":false,"type":"string"},"x-device-id":{"in":"header","description":"The device id.","name":"x-device-id","required":false,"type":"string"},"authorization":{"in":"header","description":"The user's API token preceded by the keyword `Bearer ` (with space between it and the token). For more information, see [API tutorial](http://developer.sisense.com/display/API2/Using+the+REST+API).","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},"Auth":{"in":"header","description":"The user's API token preceded by the keyword `Bearer ` (with a single space between it and the token).","name":"authorization","required":false,"type":"string","pattern":"^Bearer .*"},"Fields":{"name":"fields","in":"query","description":"A whitelist of fields to return for each object in the response.","required":false,"type":"string"},"Sort":{"name":"sort","in":"query","description":"A field by which the results should be sorted.\n\nResults will be sorted in ascending order by default, or descending if the field name is prefixed by `-`.","required":false,"type":"string"},"Skip":{"name":"skip","in":"query","description":"Number of results to skip from the start of the data set.\n\nThis parameter must be used with the `limit` parameter, and is intended for paging.","required":false,"type":"integer","minimum":0},"Limit":{"name":"limit","in":"query","description":"Number of results to be returned from the data set.\n\nThis field must be used with the `skip` parameter, and is intended for paging.","required":false,"type":"integer","minimum":1},"Expand":{"name":"expand","in":"query","description":"A List of fields that should be expanded in the response. Separated by commas `,`.\n\nExpanded fields will substitute their ID value with actual objects.\n\nMay be nested using the `resource.subResource` format.","required":false,"type":"string"},"DatamodelId":{"name":"datamodelId","in":"path","description":"A Datamodel ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"DatamodelTitle":{"name":"datamodeltitle","in":"path","required":true,"description":"A Datamodel Title.","type":"string"},"ParentOid":{"name":"parentOid","in":"query","description":"A perspective parent ID.","required":false,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"DatasetId":{"name":"datasetId","in":"path","description":"A Dataset ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"TableId":{"name":"tableId","in":"path","description":"A Table ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"RelationId":{"name":"relationId","in":"path","description":"A Datamodel Relation ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"BuildId":{"name":"buildId","in":"path","description":"A Build Task ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"PerspectiveId":{"name":"perspectiveId","in":"path","description":"A Datamodel perspective ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"AsyncExportId":{"name":"asyncExportId","in":"path","description":"An async Datamodel Export Task ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"AsyncImportId":{"name":"asyncImportId","in":"path","description":"An async Datamodel Import Task ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"ScheduleId":{"name":"scheduleId","in":"path","description":"A Datamodel Build Schedule ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"DataGroupId":{"name":"dataGroupId","in":"path","description":"A Data Group ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"NodeId":{"name":"nodeId","in":"path","description":"A Cluster Node ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"QueryDatamodelId":{"name":"datamodelId","in":"query","description":"A Datamodel ID.","required":true,"type":"string","format":"uuid","pattern":"^[0-9a-f]{8}(-?[0-9a-f]{4}){3}-?[0-9a-f]{4,12}$"},"SchemaType":{"name":"schemaType","in":"query","description":"Desired Datamodel schema instance. Defaults to none (do not include schema in response).","enum":["none","latest","running"],"required":false,"type":"string"},"uuid":{"in":"path","description":"The Notebook uuid","name":"uuid","required":true,"type":"string"},"widgetOid":{"in":"path","description":"widgetOid input parameter","name":"widgetOid","required":true,"type":"string"},"datamodelId":{"in":"path","description":"datamodel Id","name":"datamodelId","required":true,"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)+$"},"datamodelTitle":{"in":"path","description":"datamodel title","name":"datamodelTitle","required":true,"type":"string"},"datamodelServer":{"in":"path","description":"datamodel server","name":"datamodelServer","required":true,"type":"string"}},"responses":{"Standard200HttpResponse":{"description":"Success.","schema":{"$ref":"#/definitions/Error"}},"Standard201HttpResponse":{"description":"Created.","schema":{"$ref":"#/definitions/Error"}},"Standard204HttpResponse":{"description":"Deleted.","schema":{"$ref":"#/definitions/Error"}},"Standard400HttpResponse":{"description":"Invalid Request: Request parameters and/or body are invalid.","schema":{"$ref":"#/definitions/Error"}},"Standard401HttpResponse":{"description":"Unauthorized: Required authentication was not provided.","schema":{"$ref":"#/definitions/Error"}},"Standard403HttpResponse":{"description":"Forbidden: Provided authentication is insufficient.","schema":{"$ref":"#/definitions/Error"}},"Standard404HttpResponse":{"description":"Not Found: The server has not found anything matching the request URI.","schema":{"$ref":"#/definitions/Error"}},"Standard500HttpResponse":{"description":"Internal Server Error: An unexpected server error has occurred.","schema":{"$ref":"#/definitions/Error"}},"Standard503HttpResponse":{"description":"Service Unavailable: The server is unable to handle the request due to temporary maintenance or outage.","schema":{"$ref":"#/definitions/Error"}}},"x-tags-anchors":[{"tags":["projects"]}],"x-request-parameters-anchors":[{"name":"projectId","in":"path","description":"Project ID.","required":true,"type":"string"},{"name":"branch","in":"path","description":"Branch name.","required":true,"type":"string"},{"name":"commit","in":"path","description":"Commit hash.","required":true,"type":"string"},{"name":"x-git-status-checksum","in":"header","required":true,"description":"Status checksum of the content in this project last received from the server.","type":"string"}],"x-response-headers-anchors":[{"x-git-status-checksum":{"description":"Latest status checksum of the content in this project.","type":"string"}}],"x-responses-anchors":[{"description":"Bad request.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95505},"status":{"type":"integer","example":400},"httpMessage":{"type":"string","example":"Bad Request"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"Forbidden.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95502},"status":{"type":"integer","example":403},"httpMessage":{"type":"string","example":"Forbidden"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"Not found.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95503},"status":{"type":"integer","example":404},"httpMessage":{"type":"string","example":"Not Found"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"Conflict.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95512},"status":{"type":"integer","example":409},"httpMessage":{"type":"string","example":"Conflict"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"The project's git repository is locked. Another user was making changes to the Git repository. Please try again.\n\nIf this error continues, even when there is no user making changes, an admin can use the unlock project endpoint to manually unlock the project.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95513},"status":{"type":"integer","example":423},"httpMessage":{"type":"string","example":"Locked"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"Internal server error.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95500},"status":{"type":"integer","example":500},"httpMessage":{"type":"string","example":"Internal Server Error"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}},{"description":"The action could not be completed because the Git repository is in a detached HEAD state, and this action is not allowed. Please checkout a branch and try again.","schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":95514},"status":{"type":"integer","example":512},"httpMessage":{"type":"string","example":"Git Detached HEAD"},"message":{"type":"string"}},"required":["code","status","httpMessage","message"]}}}}]}