SoftSync AI Templates API

The Templates API from SoftSync AI — 11 operation(s) for templates.

Operations 11

GET /templates/catalog Add-on templates with their installed state #
GET /templates/cms/builder-prompt The text to paste into an AI website builder so it uses this workspace as the… #
POST /templates/website/builder-prompt The one text to paste into an AI website builder: the parts the app runs for… #
GET /templates/examples How many example records templates added are left, and how many of the team's… #
POST /templates/examples/remove Move every example record templates added to the Deleted Bin, locked ones… #
POST /templates/copy/preview What copying setup from this organization into another would add, without… #
POST /templates/copy Copy setup (objects, groups with their views and dashboards, forms, email and… #
POST /templates/{name}/preview What installing a template would add, without changing anything #
POST /templates/{name}/install Install or update an add-on template. #
POST /templates/{name}/uninstall Hide an add-on template's groups. Its objects and records are kept #
POST /templates/seed/crm Create an organization: set up from a template, or copied from another… #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/softsync-ai:softsync-ai-templates-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

softsync-ai-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Softsync Templates API
  description: '## Introduction


    The Softsync Platform API


    This API lets you read and write your Softsync data from your own applications. Authenticate with a personal API key created in **Settings → API Keys**, sent as the `x-api-key` header.


    **New here?** Read **Concepts** first, then **Authentication**, then **Quickstart: full cycle** — it walks the whole thing end to end. **Objects**, **Records**, **Groups & Views** and **Notes** cover each area in depth, and **Code Generation** shows how to turn this document into a typed client.


    To try a request from this page, paste your API key into the **Authentication** panel on the right.


    ## Support


    If you need help with API access or integration details, contact contact@softsync.ai.'
  version: 0.1.0
  contact: {}
servers: []
security:
- x-api-key: []
tags:
- name: Templates
paths:
  /templates/catalog:
    get:
      operationId: getTemplateCatalog
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TemplateCatalogEntry'
      security:
      - bearer: []
      summary: Add-on templates with their installed state
      tags:
      - Templates
      x-feature: templates
  /templates/cms/builder-prompt:
    get:
      operationId: getCmsBuilderPrompt
      parameters:
      - name: api
        required: true
        in: query
        description: The API address
        schema:
          type: string
      - name: app
        required: true
        in: query
        description: The app address
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  prompt:
                    type: string
      security:
      - bearer: []
      summary: The text to paste into an AI website builder so it uses this workspace as the…
      tags:
      - Templates
      x-feature: templates
  /templates/website/builder-prompt:
    post:
      operationId: getWebsiteBuilderPrompt
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteBuilderPromptDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  prompt:
                    type: string
      security:
      - bearer: []
      summary: 'The one text to paste into an AI website builder: the parts the app runs for…'
      tags:
      - Templates
      x-feature: templates
  /templates/examples:
    get:
      operationId: getExampleData
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExampleDataStatus'
      security:
      - bearer: []
      summary: How many example records templates added are left, and how many of the team's…
      tags:
      - Templates
      x-feature: templates
  /templates/examples/remove:
    post:
      operationId: removeExampleData
      parameters: []
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemovedExampleData'
      security:
      - bearer: []
      summary: Move every example record templates added to the Deleted Bin, locked ones…
      tags:
      - Templates
      x-feature: templates
  /templates/copy/preview:
    post:
      operationId: previewCopyToWorkspace
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyToWorkspaceDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopyPlan'
      security:
      - bearer: []
      summary: What copying setup from this organization into another would add, without…
      tags:
      - Templates
      x-feature: templates
  /templates/copy:
    post:
      operationId: copyToWorkspace
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyToWorkspaceDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopyPlan'
      security:
      - bearer: []
      summary: Copy setup (objects, groups with their views and dashboards, forms, email and…
      tags:
      - Templates
      x-feature: templates
  /templates/{name}/preview:
    post:
      operationId: previewTemplateInstall
      parameters:
      - name: name
        required: true
        in: path
        description: Template name from GET /templates/catalog, e.g. real-estate
        schema:
          type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatePlan'
      security:
      - bearer: []
      summary: What installing a template would add, without changing anything
      tags:
      - Templates
      x-feature: templates
  /templates/{name}/install:
    post:
      operationId: installTemplate
      parameters:
      - name: name
        required: true
        in: path
        description: Template name from GET /templates/catalog, e.g. real-estate
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallTemplateDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatePlan'
      security:
      - bearer: []
      summary: Install or update an add-on template.
      tags:
      - Templates
      x-feature: templates
  /templates/{name}/uninstall:
    post:
      operationId: uninstallTemplate
      parameters:
      - name: name
        required: true
        in: path
        description: Template name from GET /templates/catalog, e.g. real-estate
        schema:
          type: string
      responses:
        '201':
          description: How many of the template's groups were hidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  hiddenGroups:
                    type: number
      security:
      - bearer: []
      summary: Hide an add-on template's groups. Its objects and records are kept
      tags:
      - Templates
      x-feature: templates
  /templates/seed/crm:
    post:
      operationId: seedCrm
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedTemplateDto'
      responses:
        '201':
          description: The new organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace'
        '400':
          description: The organization could not be created
        '403':
          description: Not an admin of the organization named
        '404':
          description: Organization or template not found
      security:
      - bearer: []
      summary: 'Create an organization: set up from a template, or copied from another…'
      tags:
      - Templates
      x-feature: templates
components:
  schemas:
    ExampleDataStatus:
      type: object
      properties:
        examples:
          type: number
          description: Example records still in the workspace.
        ownRecords:
          type: number
          description: The team's own records in the objects that hold examples.
      required:
      - examples
      - ownRecords
    Workspace:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        metadata:
          $ref: '#/components/schemas/WorkspaceMetadata'
        isDeleted:
          type: boolean
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
        plugins:
          type: array
          items:
            type: string
        managedBy:
          type: string
          description: Id of the organization this one is managed from.
      required:
      - id
      - name
      - isDeleted
      - createdAt
      - updatedAt
      - plugins
    WorkspacePreferenceDto:
      type: object
      properties:
        country:
          type: string
        currency:
          type: string
        fiscalYearStartMonth:
          type: number
          minimum: 1
          maximum: 12
        preferredLanguage:
          type: string
        avatarUrl:
          type: string
        segmentation:
          $ref: '#/components/schemas/WorkspaceSegmentationDto'
        onboarding:
          $ref: '#/components/schemas/WorkspaceOnboardingDto'
        partnerStack:
          $ref: '#/components/schemas/WorkspacePartnerStackDto'
        businessProfileScanId:
          type: string
          description: The `scanId` from businessProfileScan. The finished profile is saved on the new workspace; it is not stored as a preference.
    WorkspaceMetadata:
      type: object
      properties:
        provider:
          allOf:
          - $ref: '#/components/schemas/WorkspaceProvider'
        template:
          type: string
        installedTemplates:
          type: array
          items:
            type: string
        country:
          type: string
        currency:
          type: string
        fiscalYearStartMonth:
          type: number
          minimum: 1
          maximum: 12
        preferredLanguage:
          type: string
        avatarUrl:
          type: string
        segmentation:
          type: object
          description: Expandable workspace segmentation metadata
          example:
            role: Sales
            teamSize: 11-50
            industry: SaaS
            usedSystem: HubSpot
        onboarding:
          type: object
          description: Durable progress for workspace-creation onboarding across redirects and sessions.
        partnerStack:
          type: object
        softLimitNotificationMonths:
          type: object
        businessProfile:
          type: object
        onboardingLater:
          type: array
          items:
            type: string
            enum:
            - import
            - mailbox
        audienceSyncEnabled:
          type: boolean
        audienceSyncProviders:
          description: Provider keys included when this workspace receives the platform audience projection. Empty means all providers.
          type: array
          items:
            type: string
        audienceLastSyncedAt:
          format: date-time
          type: string
        sidebar:
          type: object
    InstallTemplateDto:
      type: object
      properties:
        samples:
          type: boolean
          default: false
    WorkspaceProvider:
      type: string
      enum:
      - softsync
      - doneai
      - analystx
      description: Provider configured in the requesting client. Defaults to the server default for older clients.
    TemplatePlanView:
      type: object
      properties:
        name:
          type: string
        table:
          type: string
        isNew:
          type: boolean
      required:
      - name
      - table
      - isNew
    TemplatePlanConflict:
      type: object
      properties:
        table:
          type: string
        field:
          type: string
        reason:
          type: string
          enum:
          - kind
          - source
        existing:
          type: string
        template:
          type: string
      required:
      - table
      - field
      - reason
      - existing
      - template
    RemovedExampleData:
      type: object
      properties:
        removed:
          type: number
          description: Example records moved to the Deleted Bin.
      required:
      - removed
    CopyPlan:
      type: object
      properties:
        template:
          type: string
        version:
          type: number
        missingRequirements:
          type: array
          items:
            type: string
        installed:
          type: boolean
        installedVersion:
          type: number
        tables:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanTable'
        conflicts:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanConflict'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanGroup'
        sampleRecords:
          type: number
          description: 'Preview: example records on offer. Install: example records actually added.'
        sampleIssues:
          description: Example records refused when they were added (by this install, or the one that added them), e.g. by a table rule. Empty when all went in.
          type: array
          items:
            $ref: '#/components/schemas/TemplateSampleIssue'
        rules:
          description: Rules on objects the workspace already has that installing adds or updates, and built-in rules kept as the team has them. New objects' rules aren't listed.
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanRule'
        records:
          description: 'Copies only: forms, email and document templates.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanRecord'
        workflows:
          description: 'Copies only: workflows, added switched off.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanWorkflow'
        warnings:
          description: 'Copies only: references that can''t be found where the copy goes, so they are cleared.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanWarning'
        waitingOn:
          description: Features the template has pieces for that are off in this workspace (e.g. meetings for its booking pages). Each piece is added once its feature is switched on.
          type: array
          items:
            type: string
        startsOff:
          type: array
          description: Pieces the template adds switched off (its portals, booking pages, website chats), for an admin to turn on afterwards.
          items:
            type: string
            enum:
            - forms
            - emailTemplates
            - documents
            - bookingPages
            - portals
            - webAgents
            - dashboards
            - workflows
            - other
        notFound:
          description: Selected names that matched nothing here.
          type: array
          items:
            type: string
      required:
      - template
      - version
      - missingRequirements
      - installed
      - tables
      - conflicts
      - groups
      - sampleRecords
      - sampleIssues
      - rules
      - waitingOn
      - startsOff
      - notFound
    TemplateSampleIssue:
      type: object
      properties:
        table:
          type: string
          description: API name of the object.
        sample:
          type: string
          description: 'The example''s lookup value (e.g. its name), or its position such as #3.'
        stage:
          type: string
          enum:
          - create
          - link
          description: 'create: the example was not added. link: it was added, but its links to examples added after it were refused.'
        reason:
          type: string
          description: Why it was refused, e.g. the rule message.
      required:
      - table
      - sample
      - stage
      - reason
    CreateWorkspaceFromDto:
      type: object
      properties:
        template:
          type: string
          description: A template by name, e.g. crm. The default.
        workspaceId:
          type: string
          description: 'Copy this organization''s setup: objects, fields, groups, views, rules, forms, email and document templates, dashboards and workflows (switched off), with its language, country, currency, brand and sidebar. No records, members, mailboxes or connections. You must be its admin.'
    TemplatePlanGroup:
      type: object
      properties:
        title:
          type: string
        isNew:
          type: boolean
        restored:
          type: boolean
          description: Hidden by an earlier uninstall; shown again.
        views:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanView'
      required:
      - title
      - isNew
      - restored
      - views
    SeedTemplateDto:
      type: object
      properties:
        workspaceName:
          type: string
          description: The new organization’s name.
        name:
          type: string
          description: Same as workspaceName.
        provider:
          description: Which product it is for. Taken from `from.workspaceId` or `managedBy` when not given.
          allOf:
          - $ref: '#/components/schemas/WorkspaceProvider'
        from:
          $ref: '#/components/schemas/CreateWorkspaceFromDto'
        people:
          description: People to invite, each with their role.
          type: array
          items:
            $ref: '#/components/schemas/NewWorkspacePersonDto'
        managedBy:
          type: string
          description: Create it as a client organization of this one. You must be its admin.
        sampleData:
          type: boolean
          default: true
          description: Whether to seed sample data
        preferences:
          $ref: '#/components/schemas/WorkspacePreferenceDto'
      required:
      - sampleData
    TemplatePreview:
      type: object
      properties:
        views:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePreviewView'
        charts:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePreviewChart'
      required:
      - views
      - charts
    TemplatePreviewField:
      type: object
      properties:
        apiName:
          type: string
        displayName:
          type: string
        kind:
          type: string
        options:
          type: object
          additionalProperties: true
      required:
      - apiName
      - displayName
      - kind
      - options
    TemplatePlanRecord:
      type: object
      properties:
        table:
          type: string
          description: API name of the hidden object, e.g. forms.
        title:
          type: string
        isNew:
          type: boolean
          description: False when one with the same name is already there; it is left as it is.
      required:
      - table
      - title
      - isNew
    TemplatePlanRule:
      type: object
      properties:
        table:
          type: string
          description: API name of the object.
        rule:
          type: string
          description: Stable id of the rule.
        change:
          type: string
          enum:
          - added
          - updated
          - kept-edited
          - kept-unknown
          - invalid
          description: 'added: new to the object. updated: the team never edited it, so it follows the template. kept-edited: the team edited it; theirs is kept. kept-unknown: installed before edits were tracked and not a version the template shipped; kept. invalid: doesn''t fit the object any more; not changed.'
      required:
      - table
      - rule
      - change
    WebsiteBuilderPromptDto:
      type: object
      properties:
        api:
          type: string
          description: The API address
        app:
          type: string
          description: The app address
        pieces:
          type: array
          items:
            $ref: '#/components/schemas/WebsitePieceDto'
      required:
      - api
      - app
      - pieces
    TemplatePlanField:
      type: object
      properties:
        apiName:
          type: string
        displayName:
          type: string
        kind:
          type: string
      required:
      - apiName
      - displayName
      - kind
    PackageSelectionDto:
      type: object
      properties:
        all:
          type: boolean
          description: The whole setup.
        objects:
          description: Objects, by API name or label.
          type: array
          items:
            type: string
        groups:
          description: Groups by title, with their views and dashboards.
          type: array
          items:
            type: string
        forms:
          description: Forms, by title.
          type: array
          items:
            type: string
        emailTemplates:
          description: Email templates, by title.
          type: array
          items:
            type: string
        documentTemplates:
          description: Document templates, by title.
          type: array
          items:
            type: string
        workflows:
          description: Workflows, by name.
          type: array
          items:
            type: string
    TemplatePlanWarning:
      type: object
      properties:
        kind:
          type: string
          enum:
          - table
          - field
          - fieldPath
          - group
          - view
          - workflow
          - record
          - user
          - file
          - connection
        where:
          type: string
          description: Where it was, e.g. the form or workflow.
        value:
          type: string
          description: What it pointed at, e.g. an email address.
        reason:
          type: string
          description: Why it was cleared.
      required:
      - kind
      - where
      - value
      - reason
    WebsitePieceDto:
      type: object
      properties:
        kind:
          type: string
          enum:
          - chat
          - booking
          - help
          - form
        title:
          type: string
          description: Its name in the app.
        code:
          type: string
          description: The line that puts it on a site.
        url:
          type: string
          description: Its own address.
      required:
      - kind
      - title
    WorkspaceOnboardingDto:
      type: object
      properties:
        version:
          type: number
          example: 1
        status:
          type: string
          enum:
          - in_progress
          - completed
        currentStep:
          type: string
          enum:
          - intro
          - welcome
          - role
          - team
          - source
          - acquisition-source
          - loading
          - payment
          - story
          - connection-flow
          - contacts-import
          - email-integration
          - ready
        connectionFlowConnectorKey:
          type: string
        connectionFlowKey:
          type: string
        connectionFlowImportWorkflowName:
          type: string
        pendingInviteEmails:
          type: array
          items:
            type: string
        startedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
      required:
      - version
      - status
    TemplateListing:
      type: object
      properties:
        icon:
          type: string
        suggestedIndustries:
          description: Onboarding industries that get a "Recommended" badge.
          type: array
          items:
            type: string
        section:
          type: string
          enum:
          - common
          - industry
          description: 'Where it is listed: "common" suits any business and is shown first; "industry" suits one line of work.'
    TemplatePlanTable:
      type: object
      properties:
        apiName:
          type: string
        displayName:
          type: string
        isNew:
          type: boolean
          description: False when the object already exists.
        newFields:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanField'
      required:
      - apiName
      - displayName
      - isNew
      - newFields
    NewWorkspacePersonDto:
      type: object
      properties:
        email:
          type: string
        role:
          allOf:
          - $ref: '#/components/schemas/WorkspaceRole'
      required:
      - email
      - role
    TemplatePreviewView:
      type: object
      properties:
        name:
          type: string
        group:
          type: string
        table:
          type: string
          description: The object the view shows.
        viewType:
          type: string
        groupBy:
          $ref: '#/components/schemas/TemplatePreviewField'
        fields:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePreviewField'
        rows:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Example records, keyed by field apiName.
      required:
      - name
      - group
      - table
      - viewType
      - fields
      - rows
    TemplatePlan:
      type: object
      properties:
        template:
          type: string
        version:
          type: number
        missingRequirements:
          type: array
          items:
            type: string
        installed:
          type: boolean
        installedVersion:
          type: number
        tables:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanTable'
        conflicts:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanConflict'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanGroup'
        sampleRecords:
          type: number
          description: 'Preview: example records on offer. Install: example records actually added.'
        sampleIssues:
          description: Example records refused when they were added (by this install, or the one that added them), e.g. by a table rule. Empty when all went in.
          type: array
          items:
            $ref: '#/components/schemas/TemplateSampleIssue'
        rules:
          description: Rules on objects the workspace already has that installing adds or updates, and built-in rules kept as the team has them. New objects' rules aren't listed.
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanRule'
        records:
          description: 'Copies only: forms, email and document templates.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanRecord'
        workflows:
          description: 'Copies only: workflows, added switched off.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanWorkflow'
        warnings:
          description: 'Copies only: references that can''t be found where the copy goes, so they are cleared.'
          type: array
          items:
            $ref: '#/components/schemas/TemplatePlanWarning'
        waitingOn:
          description: Features the template has pieces for that are off in this workspace (e.g. meetings for its booking pages). Each piece is added once its feature is switched on.
          type: array
          items:
            type: string
        startsOff:
          type: array
          description: Pieces the template adds switched off (its portals, booking pages, website chats), for an admin to turn on afterwards.
          items:
            type: string
            enum:
            - forms
            - emailTemplates
            - documents
            - bookingPages
            - portals
            - webAgents
            - dashboards
            - workflows
            - other
      required:
      - template
      - version
      - missingRequirements
      - installed
      - tables
      - conflicts
      - groups
      - sampleRecords
      - sampleIssues
      - rules
      - waitingOn
      - startsOff
    TemplateCatalogEntry:
      type: object
      properties:
        name:
          type: string
        version:
          type: number
        requires:
          type: array
          items:
            type: string
        listing:
          $ref: '#/components/schemas/TemplateListing'
        installed:
          type: boolean
        installedVersion:
          type: number
        updateAvailable:
          type: boolean
        missingRequirements:
          type: array
          items:
            type: string
        recommended:
          type: boolean
          description: Its onboarding industry is suggested.
        preview:
          $ref: '#/components/schemas/TemplatePreview'
      required:
      - name
      - version
      - requires
      - listing
      - installed
      - updateAvailable
      - missingRequirements
      - recommended
      - preview
    CopyToWorkspaceDto:
      type: object
      properties:
        targetWorkspaceId:
          type: string
          description: The organization to copy into. You must be an admin of both.
        selection:
          $ref: '#/components/schemas/PackageSelectionDto'
      required:
      - targetWorkspaceId
      - selection
    WorkspaceSegmentationDto:
      type: object
      properties:
        role:
          type: string
        teamSize:
          type: string
        industry:
          type: string
        usedSystem:
          type: string
        usedSystemDetail:
          type: string
        acquisitionSource:
          type: string
        acquisitionSourceDetail:
          type: string
        referralCode:
          type: string
    TemplatePreviewChart:
      type: object
      properties:
        chartType:
          type: string
        measure:
          type: string
        table:
          type: string
        by:
          type: string
          description: Field the chart splits by.
        of:
          type: string
          description: Field the chart adds up.
      required:
      - chartType
      - measure
      - table
    WorkspaceRole:
      type: string
      enum:
      - ADMIN
      - EDITOR
      - VIEWER
      - GUEST
      description: Roles that see it besides its managers
    WorkspacePartnerStackDto:
      type: object
      properties:
        xid:
          type: string
        partnerKey:
          type: string
    TemplatePlanWorkflow:
      type: object
      properties:
        name:
          type: string
        isNew:
          type: boolean
          description: False when the workspace already has it; it is left as it is.
      required:
      - name
      - isNew
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key