openapi: 3.0.1
info:
  title: Simplifier Client API
  description: Client route for Simplifier Apps
  termsOfService: ''
  version: '2.0, 3.0'
externalDocs:
  description: Simplifier Docs
  url: https://community.simplifier.io/doc/current-release/
servers:
  - url: /client/
tags:
  - name: Application
  - name: Dependencies
  - name: Authentication
  - name: Business Object
  - name: Execution
  - name: Connector
  - name: Download
  - name: Email
  - name: Library
  - name: MobileClient
  - name: Modules
  - name: Example
  - name: Plugin
  - name: ServerSettings
  - name: Template
  - name: AI
  - name: Simplifier
  - name: Workflow
paths:
  /2.0/appDeps/{appName}:
    get:
      tags:
        - Application
        - Dependencies
      summary: Get dependencies for application
      operationId: getDependencies
      parameters:
        - name: appName
          in: path
          description: Name of application
          required: true
          schema:
            type: string
          example: MyApp
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllDependencies'
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: App not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/app-list:
    get:
      tags:
        - Application
      summary: Get application list
      operationId: getApps
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppList'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
  /2.0/AuthIdentityProviders:
    get:
      tags:
        - Authentication
      summary: Get a list of available SAML or OAuth identity providers
      operationId: get
      responses:
        '200':
          description: identity providers object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthIdentityProviderList'
  /2.0/business-object/{businessObject}/{method}:
    post:
      tags:
        - Business Object
        - Execution
      summary: Execute Business Object Method
      operationId: executeBusinessObject
      parameters:
        - name: businessObject
          in: path
          description: Name of Business Object
          required: true
          schema:
            type: string
          example: MyBO
        - name: method
          in: path
          description: Name of Method
          required: true
          schema:
            type: string
          example: MyMethod
        - name: parametrized
          in: query
          description: Perform parameter validation and substitution (if false, response is wrapped in Response object)
          allowEmptyValue: true
          schema:
            type: boolean
            default: true
      requestBody:
        description: Input parameters for method call
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: BusinessObject or Method not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '422':
          description: Parameters not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/connector/{connector}:
    post:
      tags:
        - Connector
        - Execution
      summary: Execute Connector
      operationId: executeConnector
      parameters:
        - name: connector
          in: path
          description: Name of Connector
          required: true
          schema:
            type: string
          example: MyConnector
      requestBody:
        description: Input payload for connector
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: Connector not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '409':
          description: Connector not active
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/connector/{connector}/{call}:
    post:
      tags:
        - Connector
        - Execution
      summary: Execute Connector Call
      operationId: executeConnectorCall
      parameters:
        - name: connector
          in: path
          description: Name of Connector
          required: true
          schema:
            type: string
          example: MyConnector
        - name: call
          in: path
          description: Name of Connector Call
          required: true
          schema:
            type: string
          example: MyCall
        - name: SimplifierApiKey
          in: header
          description: The api key specified in the security settings. This is mandatory, if the enhanced connector execution security is active.
          schema: {}
      requestBody:
        description: Input parameters for connector call
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: Connector or Call not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '409':
          description: Connector not active
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '422':
          description: Parameters not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/apps/{appName}:
    get:
      tags:
        - Application
        - Download
      summary: Download application ZIP
      operationId: downloadApp
      parameters:
        - name: appName
          in: path
          description: Name of application
          required: true
          schema:
            type: string
          example: MyApp
        - name: standAlone
          in: query
          description: Return application structure for Stand-Alone mode
          allowEmptyValue: true
          schema:
            type: boolean
            default: false
        - name: baseUrl
          in: query
          description: Set Base URL for API in Application (for StandAlone or Hosted Mode)
          allowEmptyValue: true
          schema:
            type: string
      responses:
        '200':
          description: Successful ZIP download
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/zip:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: App not found
          content:
            application/zip:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/email:
    post:
      tags:
        - Email
      summary: Send email
      operationId: sendEmail
      requestBody:
        description: Input parameters for send execution
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '400':
          description: Email could not be sent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/libs:
    get:
      tags:
        - Dependencies
        - Library
      summary: List all managed libraries
      operationId: listLibs
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LibraryList'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
  /2.0/libs/{libId}:
    get:
      tags:
        - Download
      summary: Download managed library ZIP
      operationId: downloadLibrary
      parameters:
        - name: libId
          in: path
          description: ID of Library
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful ZIP download
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Library not found or not stored
          content:
            application/zip:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/log/MobileClient:
    post:
      tags:
        - MobileClient
      summary: Post general message to simplifier logger
      operationId: post
      requestBody:
        description: The logging message as json
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/MobileClientLogMessage'
        required: true
      responses:
        '200':
          description: Mobile Client WebView logging successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MobileLogResponse'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/log/WebView:
    post:
      tags:
        - MobileClient
      summary: Post WebView message to simplifier logger
      operationId: post_1
      requestBody:
        description: The logging message consisting of logLevel (error, warn/warning, info, debug) and details as json
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/MobileWebViewLogMessage'
        required: true
      responses:
        '200':
          description: Mobile Client WebView logging successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MobileLogResponse'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/modules:
    get:
      tags:
        - Modules
      summary: Get all modules
      operationId: getModules
      responses:
        '200':
          description: The module list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModuleList'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
  /2.0/ping:
    get:
      tags:
        - Example
      summary: Get default ping/pong message
      operationId: getPong
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ping_response'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
    post:
      tags:
        - Example
      summary: Get custom ping/pong message
      operationId: postPong
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/Ping_request'
        required: false
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ping_response'
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/pluginSlot/{plugin}/{slot}:
    post:
      tags:
        - Execution
        - Plugin
      summary: Execute Plugin Slot
      operationId: executePluginSlot
      parameters:
        - name: plugin
          in: path
          description: Name of Plugin
          required: true
          schema:
            type: string
          example: TestPlugin
        - name: slot
          in: path
          description: Name of Slot
          required: true
          schema:
            type: string
          example: slot
      requestBody:
        description: Input payload for plugin slot
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '400':
          description: Plugin does not support slots
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: No Permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '404':
          description: Plugin not registered or Slot not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/pushnotifications/send:
    post:
      tags:
        - MobileClient
      summary: Send a push notification
      operationId: sendNotification
      requestBody:
        description: The notification parameters
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/NotificationWithRecipients'
        required: true
      responses:
        '200':
          description: Sent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessMessage'
        '400':
          description: Invalid notification launch parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '403':
          description: No permission to send notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '409':
          description: Error during sending of push notification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/serverSettings/passwordPolicy:
    get:
      tags:
        - ServerSettings
      summary: Get the password policy
      operationId: getPasswordPolicy
      responses:
        '200':
          description: The password policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicPasswordPolicy'
        '401':
          description: Unauthorized
          content: {}
      security:
        - basicAuth: []
  /2.0/systemLibs/{libId}:
    get:
      tags:
        - Download
      summary: Download system library ZIP by ID
      operationId: systemLibraryById
      parameters:
        - name: libId
          in: path
          description: ID of Library
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful ZIP download
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Library not found or not stored
          content:
            application/zip:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/systemLibs/{libName}/{version}:
    get:
      tags:
        - Download
      summary: Download system library ZIP by name and version
      operationId: systemLibraryByName
      parameters:
        - name: libName
          in: path
          description: System Library Name (OpenUI5 or SapUI5)
          required: true
          schema:
            type: string
        - name: version
          in: path
          description: Library Version as major.minor
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful ZIP download
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Library not found or not stored
          content:
            application/zip:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/template/{folderName}/{templateName}:
    get:
      tags:
        - Template
      summary: Get template text of a template
      operationId: getTemplate
      parameters:
        - name: folderName
          in: path
          description: Name of Folder
          required: true
          schema:
            type: string
          example: system
        - name: templateName
          in: path
          description: Name of Template
          required: true
          schema:
            type: string
          example: MyTemplate
      responses:
        '200':
          description: successful operation
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Template, folder or parameter data type not found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
    post:
      tags:
        - Template
      summary: Render template
      operationId: renderTemplate
      parameters:
        - name: folderName
          in: path
          description: Name of Folder
          required: true
          schema:
            type: string
          example: system
        - name: templateName
          in: path
          description: Name of Template
          required: true
          schema:
            type: string
          example: MyTemplate
      requestBody:
        description: Input parameters for render execution
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JValue'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Template not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '422':
          description: Parameters not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/template/{folderName}:
    get:
      tags:
        - Template
      summary: Get all templates of a folder
      operationId: getTemplatesByFolderName
      parameters:
        - name: folderName
          in: path
          description: Name of Folder
          required: true
          schema:
            type: string
          example: system
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JValue'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Template folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/ai/translate:
    post:
      tags:
        - AI
      summary: Translate given values to another language
      operationId: aiTranslate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AiTranslationRequest'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiTranslationResponse'
        '403':
           description: Forbidden, if the user doesnt have permission to access the ai translation
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ApiFailureResponseJson'
        '409':
          description: Conflict, if the feature is not activated or the licence has no subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
        '422':
          description: Unprocessable Entity, if one of the passed language code could not be identified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
  /2.0/devices:
    post:
      tags:
        - MobileClient
      summary: Register a device
      operationId: registerDevice
      requestBody:
        description: The registration message as json
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/RegisterUserDevice'
        required: true
      responses:
        '200':
          description: Registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessMessage'
        '400':
          description: Device could not be registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFailureResponseJson'
      security:
        - basicAuth: []
      x-codegen-request-body-name: body
  /2.0/version:
    get:
      tags:
        - Simplifier
      summary: Get version of the currently running Simplifier app server
      operationId: get_1
      responses:
        '200':
          description: VersionInfo object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionInfo'
  /3.0/workflow-runtime/workflowInstance/start:
    post:
      tags:
        - Workflow
      operationId: workflowInstanceStart
      description: Start a new Workflow Instance and set initial variable values
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                processData:
                  type: object
                  description: Properties should be the variable names that should be set as initial values of the workflow instance, the values should be the JSON values of the variables.
                  example: |
                    {
                      "Variable1": 123,
                      "Variable2": "test"
                    }
                workflowId:
                  type: string
                  example: Your_Workflow_ID
      responses:
        '200':
          description: Return the Workflow Instance ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceStart'
        '403':
          description: Forbidden, if the user is not permitted to start workflows with the given workflowId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '404':
          description: Not Found, if no workflow can be found for given workflowId property.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if the given processData is not valid for the variables of the workflow.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/workflowInstance/{workflowInstanceId}:
    get:
      tags:
        - Workflow
      operationId: workflowInstanceGet
      description: Get details of workflow instance with variables and active task
      parameters:
        - name: workflowInstanceId
          in: path
          required: true
          schema:
            type: string
        - name: variableName
          in: query
          schema:
            type: string
            nullable: true
          example: Name of a variable that the variable values should be filtered for
      responses:
        '200':
          description: The response will contain details of the requested workflow instance including variable definitions and current variable values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceDetails'
              examples:
                'Without Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceDetailsExampleWithoutVariableFilter'
                'With Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceDetailsExampleWithVariableFilter'
        '403':
          description: Forbidden, if the user is not permitted to access the workflow.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if the variable name of the filter could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/workflowInstance/{workflowInstanceId}/tasks:
    get:
      tags:
        - Workflow
      operationId: workflowInstanceFinishedUserTaskList
      description: Get list of finished user tasks of workflow instance
      parameters:
        - name: workflowInstanceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The response will contain the list of finished user tasks including variable values before and after the user task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceFinishedTasks'
        '403':
          description: Forbidden, if the user is not permitted to access the workflow.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/workflows/{workflowId}/instances:
    get:
      tags:
        - Workflow
      operationId: workflowInstanceSingleWorkflowIdList
      description: Get a paginated list of workflow instances of the given workflow id
      parameters:
        - name: workflowId
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/WorkflowInstanceStatusFilterParam'
        - $ref: '#/components/parameters/WorkflowAssignedUsersFilterParam'
        - $ref: '#/components/parameters/WorkflowAssignedGroupsFilterParam'
        - $ref: '#/components/parameters/WorkflowStartedByFilterParam'
        - $ref: '#/components/parameters/WorkflowVariableNameFilterParam'
        - $ref: '#/components/parameters/WorkflowVariableValueFilterParam'
        - $ref: '#/components/parameters/WorkflowOrderByParam'
        - $ref: '#/components/parameters/WorkflowTopParam'
        - $ref: '#/components/parameters/WorkflowSkipParam'
      responses:
        '200':
          description: The response will contain a paginated list of details of all workflow instances of the given workflow id including active tasks, variable definitions, and variable values that are sorted by the start date of the workflow instance (descending).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceList'
              examples:
                'Without Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceListExampleWithoutVariableFilter'
                'With Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceListExampleWithVariableFilter'
        '400':
          description: Bad Request, if the variableValue query parameter was used without the variableName parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if the variable name of the filter could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/workflows/instances:
    get:
      tags:
        - Workflow
      operationId: workflowInstanceMultipleWorkflowIdList
      description: Get a paginated list of workflow instances for multiple workflow ids
      parameters:
        - name: workflowIDs
          in: query
          schema:
            type: string
            nullable: true
          description: "Comma seperated list of workflow ids that should be included in the response. If the parameter is not present, all workflow ids the user is permitted for will be included."
        - $ref: '#/components/parameters/WorkflowInstanceStatusFilterParam'
        - $ref: '#/components/parameters/WorkflowAssignedUsersFilterParam'
        - $ref: '#/components/parameters/WorkflowAssignedGroupsFilterParam'
        - $ref: '#/components/parameters/WorkflowStartedByFilterParam'
        - $ref: '#/components/parameters/WorkflowVariableNameFilterParam'
        - $ref: '#/components/parameters/WorkflowVariableValueFilterParam'
        - $ref: '#/components/parameters/WorkflowOrderByParam'
        - $ref: '#/components/parameters/WorkflowTopParam'
        - $ref: '#/components/parameters/WorkflowSkipParam'
      responses:
        '200':
          description: The response will contain a paginated list of details of all workflow instances of the given workflow ids including active tasks, variable definitions, and variable values that are sorted by the start date of the workflow instance (descending).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceList'
              examples:
                'Without Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceListExampleWithoutVariableFilter'
                'With Variable Filter':
                  $ref: '#/components/examples/WorkflowInstanceListExampleWithVariableFilter'
        '400':
          description: Bad Request, if the variableValue query parameter was used without the variableName parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if the variable name of the filter could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/submit:
    post:
      tags:
        - Workflow
      operationId: workflowUserTaskSubmit
      description: Submit Values to Workflow global Variables from a User Task - The values for the parameters workflowInstanceId and activityId can be extracted from the list of user tasks. If the claiming user does not match the executing user the request will fail. Workflow instance variables can be updated using the params field of the request.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowUserTaskSubmitRequest'
      responses:
        '204':
          description: Successful, No Content.
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId property, or if no activity could be found for given activityId property.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '409':
          description: Conflict, if the submitting user is not the claiming user, the user is not permitted, the user task is no longer active, or the workflow instance is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if one of the submitted variable values does not match the variable data type or violates variable constraints, or the submitted outcome is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/draft:
    post:
      tags:
        - Workflow
      operationId: workflowUserTaskDraft
      description: Submit Values to Workflow global Variables from a User Task as a Draft without completing the user task. The outcome of the workflow instance will not be changed. The values for the parameters workflowInstanceId and activityId can be extracted from the list of user tasks. If the claiming user does not match the executing user the request will fail. Workflow instance variables can be updated using the params field of the request.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowUserTaskDraftRequest'
      responses:
        '204':
          description: Successful, No Content.
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId property, or if no activity could be found for given activityId property.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '409':
          description: Conflict, if the user is not the claiming user, the user is not permitted, the user task is no longer active, or the workflow instance is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '422':
          description: Unprocessable Entity, if one of the submitted variable values does not match the variable data type or violates variable constraints.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks:
    get:
      tags:
        - Workflow
      operationId: workflowUserTaskList
      description: List of User Task for the current User
      parameters:
        - name: top
          in: query
          schema:
            type: integer
            nullable: true
          description: Parameter controlling page size of returned results
        - $ref: '#/components/parameters/WorkflowSkipParam'
      responses:
        '200':
          description: The list will only contain tasks that are available for groups assigned to the user. 
            Not all tasks may contain a outcome or a claiming user. 
            An outcome will only be set, if an activity prior to the user task set an outcome, text color for displaying the outcome is calculated from the background color of the outcome. 
            The claiming user will be set if a user already claimed the task.
            If the top provided is provided the returned list will be reduced to the requested number of entries, otherwise the list will contain all available entries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowUserTaskList'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/{workflowInstanceId}/{activityId}:
    get:
      tags:
        - Workflow
      operationId: workflowUserTaskGet
      description: List of input variables available for a user task
      parameters:
        - name: workflowInstanceId
          in: path
          required: true
          schema:
            type: string
        - name: activityId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The response will contain readable and writeable variables with their current value available for the user task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowInstanceActivity'
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId or activityId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '409':
          description: Conflict, if the user is not permitted to access the activity, the activity is no longer active, or the workflow instance is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/claim:
    post:
      tags:
        - Workflow
      operationId: workflowUserTaskClaim
      description: A User can be assigned to a User Task (Claim a Task). The values for the parameters workflowInstanceId and activityId can be extracted from the list of user tasks. The request must contain the workflow instance id and the activity id of the user task that should be claimed. If the given group name does not match the group assigned to the user task an error response will be returned. The claiming user will be set as the given username.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowActivityParameters'
      responses:
        '204':
          description: The response will have status code 204 No Content, if successful.
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId or no activity could be found for given activityId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '409':
          description: Conflict, if the user is not permitted, the user task is no longer active, or the workflow instance is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/unclaim:
    post:
      tags:
        - Workflow
      operationId: workflowUserTaskUnclaim
      description: Reset the User Task Claim (Unclaim)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowActivityParameters'
      responses:
        '204':
          description: The response will have status code 204 No Content, if successful.
        '404':
          description: Not Found, if no workflow can be found for given workflowInstanceId or no activity could be found for given activityId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
        '409':
          description: Conflict, if the user is not permitted, the user task is no longer active, or the workflow instance is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowErrorMessage'
      security:
        - basicAuth: []
  /3.0/workflow-runtime/tasks/finished:
    get:
      tags:
        - Workflow
      operationId: workflowUserTasksListFinished
      description: List finished User Task
      parameters:
        - name: top
          in: query
          schema:
            type: integer
            nullable: true
          description: Parameter controlling page size of returned results
        - $ref: '#/components/parameters/WorkflowSkipParam'
      responses:
        '200':
          description: The list will only contain tasks that are finished, but not all tasks may contain an outcome. 
            An outcome will only be set, if any of the activities prior to the user task set an outcome, text color for displaying the outcome is calculated from the background color of the outcome. 
            The completingUser will be set to the username that submitted the task.
            If the top provided is provided the returned list will be reduced to the requested number of entries, otherwise the list will contain all available entries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowFinishedUserTaskList'
      security:
        - basicAuth: []
components:
  schemas:
    AllDependencies:
      required:
        - requiredLibs
        - requiredModules
        - requiredSystemLib
      type: object
      properties:
        requiredLibs:
          type: array
          items:
            $ref: '#/components/schemas/Dependency'
        requiredModules:
          type: array
          items:
            $ref: '#/components/schemas/ModuleDependency'
        requiredSystemLib:
          $ref: '#/components/schemas/Dependency'
    Dependency:
      required:
        - checksum
        - id
        - name
        - relativePath
        - version
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        version:
          type: string
        checksum:
          type: string
        relativePath:
          type: string
        snippet:
          type: string
    ModuleDependency:
      required:
        - checksum
        - name
        - path
        - requiredLibs
      type: object
      properties:
        name:
          type: string
        checksum:
          type: string
        path:
          type: string
        requiredLibs:
          type: array
          items:
            $ref: '#/components/schemas/Dependency'
    ApiFailureResponseJson:
      required:
        - details
        - message
        - success
      type: object
      properties:
        message:
          type: string
        success:
          type: boolean
        errorCode:
          type: string
        errorArgs:
          type: array
          items:
            type: string
        details:
          $ref: '#/components/schemas/JValue'
    JValue:
      type: object
    AppData:
      required:
        - checksum
        - description
        - modules
        - name
        - path
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        imageUrl:
          type: string
        checksum:
          type: string
        path:
          type: string
        modules:
          type: array
          items:
            $ref: '#/components/schemas/ModuleData'
    AppList:
      required:
        - apps
      type: object
      properties:
        apps:
          type: array
          items:
            $ref: '#/components/schemas/AppData'
    ModuleData:
      required:
        - checksum
        - name
        - path
      type: object
      properties:
        name:
          type: string
        checksum:
          type: string
        path:
          type: string
    AuthIdentityProvider:
      required:
        - mechanism
        - name
        - redirectEndpoint
      type: object
      properties:
        name:
          type: string
        mechanism:
          type: string
        description:
          type: string
        hideOnLogin:
          type: boolean
        redirectEndpoint:
          type: string
        icon:
          type: string
    AuthIdentityProviderList:
      required:
        - identityProviders
      type: object
      properties:
        identityProviders:
          type: array
          items:
            $ref: '#/components/schemas/AuthIdentityProvider'
    ZipStructure:
      required:
        - checksum
        - zip
      type: object
      properties:
        checksum:
          type: string
        zip:
          type: array
          items:
            pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
            type: string
            format: byte
    LibRef:
      required:
        - id
        - name
        - version
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        version:
          type: string
    LibraryData:
      required:
        - dependsOn
        - isDefault
        - name
        - version
        - zipAvailable
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        version:
          type: string
        vendor:
          type: string
        isDefault:
          type: boolean
        zipAvailable:
          type: boolean
        includeSnippet:
          type: string
        comment:
          type: string
        sessionId:
          type: string
        dependsOn:
          type: array
          items:
            $ref: '#/components/schemas/LibRef'
        isReferenced:
          type: object
          properties: {}
    LibraryList:
      required:
        - allLibs
      type: object
      properties:
        allLibs:
          type: array
          items:
            $ref: '#/components/schemas/LibraryData'
    MobileLogResponse:
      required:
        - msg
      type: object
      properties:
        msg:
          type: string
    MobileClientLogMessage:
      required:
        - details
      type: object
      properties:
        details:
          $ref: '#/components/schemas/JValue'
    MobileWebViewLogMessage:
      required:
        - details
        - logLevel
      type: object
      properties:
        logLevel:
          type: string
        details:
          $ref: '#/components/schemas/JValue'
    ModuleForClient:
      required:
        - checksum
        - name
        - path
      type: object
      properties:
        name:
          type: string
        checksum:
          type: string
        path:
          type: string
    ModuleList:
      required:
        - modules
      type: object
      properties:
        modules:
          type: array
          items:
            $ref: '#/components/schemas/ModuleForClient'
    Ping_response:
      required:
        - msg
      type: object
      properties:
        msg:
          type: string
    Ping_request:
      type: object
      properties:
        msg:
          type: string
    SuccessMessage:
      required:
        - message
      type: object
      properties:
        message:
          type: string
    LaunchData:
      required:
        - launch
        - target
      type: object
      properties:
        launch:
          type: string
        target:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
    NotificationWithRecipients:
      required:
        - groupNames
        - notification
        - userNames
      type: object
      properties:
        userNames:
          uniqueItems: true
          type: array
          items:
            type: string
        groupNames:
          uniqueItems: true
          type: array
          items:
            type: string
        notification:
          $ref: '#/components/schemas/SimplifierNotification'
    SimplifierNotification:
      required:
        - body
        - title
      type: object
      properties:
        title:
          type: string
        body:
          type: string
        launchParams:
          $ref: '#/components/schemas/LaunchData'
    PublicPasswordPolicy:
      required:
        - CanContainUserParts
        - LowerCaseCount
        - LowerCaseCountEnabled
        - MinLength
        - MinLengthEnabled
        - NumberCount
        - NumberCountEnabled
        - Symbols
        - UpperCaseCount
        - UpperCaseCountEnabled
      type: object
      properties:
        CanContainUserParts:
          type: boolean
        LowerCaseCount:
          type: integer
          format: int32
        LowerCaseCountEnabled:
          type: boolean
        MinLength:
          type: integer
          format: int32
        MinLengthEnabled:
          type: boolean
        NumberCount:
          type: integer
          format: int32
        NumberCountEnabled:
          type: boolean
        Symbols:
          type: boolean
        UpperCaseCount:
          type: integer
          format: int32
        UpperCaseCountEnabled:
          type: boolean
    RegisterUserDevice:
      required:
        - deviceId
        - deviceManufacturer
        - deviceModel
        - deviceOS
        - deviceOSVersion
        - firebaseToken
      type: object
      properties:
        deviceId:
          type: string
        firebaseToken:
          type: string
        deviceOS:
          type: string
        deviceOSVersion:
          type: string
        deviceManufacturer:
          type: string
        deviceModel:
          type: string
    AiTranslationRequest:
      type: object
      properties:
        values:
          description: >
            Values to be translated either as string, array or object. If an object is supplied all properties of the object will be translated.
          oneOf:
            - type: string
            - type: object
            - type: array
              items:
                oneOf:
                  - type: string
                  - type: object
          example: { prop1: "Wert für Übersetzung", list: [ "anderer Wert" ] }
        sourceLanguage:
          type: string
          description: "2 or 5 letter language code of source language for translation"
          example: "de_DE"
          maxLength: 5
          minLength: 2
        targetLanguages:
          type: array
          description: "List of 2 or 5 letter language codes the data should be translated to"
          items:
            type: string
            maxLength: 5
            minLength: 2
          example: [ "en_US", "it" ]
    AiTranslationResponse:
      type: object
      properties:
        translatedValues:
          type: array
          description: >
            Array containing an element with translated values for each requested language
          items:
            type: object
            properties:
              requestedLanguage:
                type: string
                example: "en"
              usedLanguage:
                type: string
                example: "en_US"
              translatedValue:
                description: >
                  Translated values in the same format as input values. If an object was given as input, the response will be an object with translated properties.
                oneOf:
                  - type: string
                  - type: object
                  - type: array
                    items:
                      oneOf:
                        - type: string
                        - type: object
                example: { prop1: "Value for translation", list: [ "other value" ] }
      example: >
        {
          "translatedValues": [
            {
              "requestedLanguage": "en_US",
              "usedLanguage": "en_US",
              "translatedValue": {
                "prop1": "Value for translation",
                "list": [
                  "other value"
                ]
              }
            },
            {
              "requestedLanguage": "it",
              "usedLanguage": "it_IT",
              "translatedValue": {
                "prop1": "Valore per la traduzione",
                "list": [
                  "altro valore"
                ]
              }
            }
          ]
        }
    VersionInfo:
      required:
        - version
      type: object
      properties:
        version:
          type: string
    WorkflowInstanceStart:
      type: object
      properties:
        workflowInstanceId:
          type: string
          example: "ee3ea75e-e042-442e-b91a-8beb1f00c802"
        version:
          type: integer
          example: 1
    WorkflowInstanceDetails:
      type: object
      properties:
        id:
          type: string
        workflow:
          type: object
          properties:
            workflowId:
              type: string
            name:
              type: string
            version:
              type: integer
            description:
              nullable: true
              type: string
        currentOutcome:
          type: object
          nullable: true
          description: Current outcome of workflow instance if set
          properties:
            name:
              type: string
            backgroundColor:
              type: string
              description: Hex color code of background color of outcome
              example: "#000000"
            textColor:
              type: string
              description: Hex color code of the outcome text
              example: "#FFFFFF"
        currentUserTask:
          type: object
          nullable: true
          description: Details of current user task of workflow instance. If the current activity of the workflow instance is no user task, this property is not present.
          properties:
            activityName:
              type: string
            claimed:
              type: boolean
            claimingUser:
              type: string
              nullable: true
              description: Username of the currently claiming user. If the user task is not claimed, this property is not present.
            assignedUsers:
              type: array
              description: List of user names assigned to user task
              items:
                type: string
            assignedGroups:
              type: array
              description: List of group names assigned to user task
              items:
                type: string
            simplifierModule:
              type: string
              description: Name of the simplifier module configured for the user task. This property will only be included if the user is assigned to the task.
              nullable: true
            taskUrl:
              type: string
              description: URL to access the configured user task module and submit the task. This property will only be included if the user is assigned to the task.
              nullable: true
        currentActivity:
          type: object
          properties:
            activityType:
              type: string
              enum:
                - START
                - FINISH
                - EXECUTEBUSINESSOBJECT
                - EXECUTECONNECTORCALL
                - NOTIFICATION
                - USERTASK
                - CONDITION
                - SPLIT
                - EXECUTEWORKFLOWINSTANCE
            id:
              type: string
            activityName:
              type: string
              nullable: true
        startedAt:
          type: string
          description: Timestamp (ISO 8601)
        startedBy:
          type: string
          nullable: true
          description: User name of starting user
        lastChangeAt:
          type: string
          description: Timestamp (ISO 8601)
        lastChangeBy:
          type: string
          nullable: true
          description: User that submitted the last user task
        state:
          type: string
        variableData:
          type: object
          nullable: true
          description: Only included if variableName parameter is not present
          properties:
            definitions:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Technical name of variable
                  displayName:
                    type: string
                  description:
                    type: string
                    nullable: true
                  dataTypeName:
                    type: string
            data:
              type: object
              description: Properties will be variable names with their current values
        variableValue:
          nullable: true
          description: Only included if the variableName parameter is present. The value of this property will be the current value of the variable.
    WorkflowInstanceFinishedTasks:
      type: object
      properties:
        tasks:
          type: array
          items:
            type: object
            properties:
              activityId:
                type: string
                example: "7ce1b2d1-1b15-494b-936c-65f397365cf4"
              displayName:
                type: string
                example: "Task 1"
              description:
                type: string
                nullable: true
                example: "The first user task"
              user:
                type: string
                description: Name of user that submitted the task
                example: "admin"
              outcome:
                type: object
                nullable: true
                description: Outcome the user task resolved to
                properties:
                  name:
                    type: string
                    example: "Outcome1"
                  backgroundColor:
                    type: string
                    description: Hex color code of background color of outcome
                    example: "#000000"
                  textColor:
                    type: string
                    description: Hex color code of the outcome text
                    example: "#FFFFFF"
              timestamp:
                type: string
                description: Timestamp (ISO 8601)
                example: "2024-03-14T17:15:51.078091+01:00"
              action:
                type: string
                example: SUBMIT
                enum:
                  - "SUBMIT"
                  - "DRAFT"
              hasVariableChanges:
                type: boolean
                example: true
              variableUpdates:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Technical name of variable
                    displayName:
                      type: string
                    description:
                      type: string
                      nullable: true
                    variableType:
                      type: string
                      enum:
                        - any
                        - complex
                        - string
                        - integer
                        - boolean
                        - date
                        - float
                    oldValue:
                      description: JSON value of variable before user task
                    newValue:
                      description: JSON value of variable after user task
                    valueChanged:
                      type: boolean
                      description: Flag if this variable was contained in the submit request of the user task
                example: |
                  [
                    {
                      "name": "TestInt",
                      "displayName": "TestInt",
                      "description": "An integer variable",
                      "variableType": "integer",
                      "oldValue": null,
                      "newValue": 124312434,
                      "valueChanged": true
                    },
                    {
                      "name": "TestString",
                      "displayName": "TestString",
                      "variableType": "string",
                      "oldValue": "test",
                      "newValue": "test",
                      "valueChanged": true
                    }
                  ]
    WorkflowInstanceList:
      type: object
      properties:
        instances:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowInstanceDetails'
        count:
          type: integer
          description: Number of existing workflow instances matching filters
          example: 1
    WorkflowUserTaskSubmitRequest:
      type: object
      properties:
        workflowInstanceId:
          type: string
          example: "b8d336fb-de47-44d0-9ea6-261780c97e8e"
        activityId:
          type: string
          example: "c262afa8-70b1-4eea-bc08-303c3c549bc8"
        params:
          type: object
          description: Properties should be the variable names available to the user task, the values should be the updated JSON values of the variables.
          example: | 
            {
              "Variable1": 1234567,
              "Variable2": "Hello World",
              "Variable3": ""
            }
        outcomeId:
          type: string
          nullable: true
          description: Id of the outcome that should be used as the result of the user task. If the user task defines no outcomes this property must be omitted.
          example: "abc67123-5dfe-2a79-b965-ebd1a671c90a"
    WorkflowUserTaskDraftRequest:
      type: object
      properties:
        workflowInstanceId:
          type: string
          example: "b8d336fb-de47-44d0-9ea6-261780c97e8e"
        activityId:
          type: string
          example: "c262afa8-70b1-4eea-bc08-303c3c549bc8"
        params:
          type: object
          description: Properties should be the variable names available to the user task, the values should be the updated JSON values of the variables.
          example: | 
            {
              "Variable1": 1234567,
              "Variable2": "Hello World",
              "Variable3": ""
            }
    WorkflowUserTaskList:
      type: object
      properties:
        tasks:
          type: array
          items:
            type: object
            properties:
              workflowInstanceId:
                type: string
                example: "ee3ea75e-e042-442e-b91a-8beb1f00c802"
              activityId:
                type: string
                example: "c262afa8-70b1-4eea-bc08-303c3c549bc8"
              currentActivityTime:
                type: string
                description: Timestamp (ISO 8601)
                example: "2023-06-27T07:37:39.129111Z"
              workflow:
                type: object
                properties:
                  workflowId:
                    type: string
                    example: "InvoiceApproval"
                  name:
                    type: string
                    example: "InvoiceApproval"
                  version:
                    type: integer
                    example: 1
              displayName:
                type: string
                example: "Gather Invoice Data by User Input"
              description:
                type: string
                example: "Gather Invoice Data by User Input"
              simplifierModule:
                type: string
                example: "CreateInvoice"
        count:
          type: integer
          example: 1
    WorkflowInstanceActivity:
      type: object
      properties:
        dataTypes:
          type: object
          properties:
            DataTypeName:
              description: Name of the data type with namespace
              type: object
              properties:
                name:
                  type: string
                  description: name of data type
                namespace:
                  type: string
                  description: namespace of data type
                description:
                  type: string
                category:
                  type: string
                  enum:
                    - base
                    - domain
                    - collection
                    - struct
                    - any
                fields:
                  type: object
                  nullable: true
                  description: fields of a struct data type containing name, dataTypeFQN, optional and description of each field
                constraints:
                  type: object
                  nullable: true
                  description: object containing constraints of data type
                collectionDataTypeFQN:
                  type: string
                  nullable: true
                  description: full qualified name (namespace/name) of collection item data type
                baseDataType:
                  type: string
                  nullable: true
                  description: name of base data type the domain datatype was extended from
          example: |
            {
              "User_attributes_Struct": {
                "name": "User_attributes_Struct",
                "namespace": "",
                "description": "auto generated data type",
                "category": "struct",
                "constraints": { },
                "fields": {
                  "description": {
                    "name": "description",
                    "dataTypeFQN": "String",
                    "optional": true,
                    "description": "auto generated field"
                  },
                  "name": {
                    "name": "name",
                    "dataTypeFQN": "String",
                    "optional": true,
                    "description": "auto generated field"
                  }
                }
              }
            }
        variables:
          type: object
          properties:
            variableDefinitions:
              type: array
              description: definitions of all variables available to the user task
              items:
                type: object
                properties:
                  displayName:
                    type: string
                  dataTypeName:
                    type: string
                    description: name of data type including namespace
                  editable:
                    type: boolean
                  optional:
                    type: boolean
                  id:
                    type: string
                    description: technical name of variable
              example: |
                [
                  {
                    "id": "InvoiceAmount",
                    "displayName": "InvoiceAmount",
                    "description": "The amount of the invoice",
                    "dataTypeName": "Float",
                    "editable": true,
                    "optional": true
                  },
                  {
                    "id": "InvoiceDate",
                    "displayName": "InvoiceDate",
                    "dataTypeName": "Date",
                    "editable": true,
                    "optional": true
                  },
                  {
                    "id": "Vendor",
                    "displayName": "Vendor",
                    "dataTypeName": "String",
                    "editable": true,
                    "optional": true
                  }
                ]
            variableData:
              type: object
              description: Object composed from variable names as properties with their current values as properties.
              example: |
                { "Vendor": "test", "InvoiceDate": null, "InvoiceAmount": 123.0 }
        task:
          type: object
          properties:
            activityId:
              type: string
              example: "c262afa8-70b1-4eea-bc08-303c3c549bc8"
            activityDisplayName:
              type: string
              example: "Gather Invoice Data"
            activityDescription:
              type: string
              nullable: true
              example: "Gather Invoice Data by User Input"
            taskStartTime:
              type: string
              description: Timestamp (ISO 8601)
              example: "2023-06-27T07:37:39.129111Z"
            claimingUser:
              type: string
              nullable: true
              example: "admin"
        workflow:
          type: object
          properties:
            workflowInstanceStartTime:
              type: string
              description: Timestamp (ISO 8601)
              example: "2023-06-27T07:37:39.090702Z"
            workflowName:
              type: string
              example: "Invoice Approval"
            workflowVersion:
              type: integer
              example: 1
            workflowInstanceId:
              type: string
              example: "ee3ea75e-e042-442e-b91a-8beb1f00c802"
            workflowId:
              type: string
              example: "InvoiceApproval"
        outcomes:
          type: object
          properties:
            currentOutcome:
              type: object
              nullable: true
              properties:
                id:
                  type: string
                  description: Technical id of outcome
                  example: "abc67123-5dfe-2a79-b965-ebd1a671c90a"
                name:
                  type: string
                  description: Display name of outcome
                  example: "Started"
                backgroundColor:
                  type: string
                  description: Hex color code of background color of outcome
                  example: "#AAB2FF"
            possibleOutcomes:
              type: array
              items:
                type: object
                properties:
                  backgroundColor:
                    description: Hex color code of background color of outcome
                    type: string
                  name:
                    description: Display name of outcome
                    type: string
                  id:
                    type: string
                    description: Technical id of outcome
                  index:
                    type: integer
                    description: order number of outcome
              example: |
                [
                  {
                    "id": "8a667c6f-5f1e-4a79-a989-eaf9be21bb4f",
                    "name": "InvoiceDataCaptured",
                    "backgroundColor": "#ffb200",
                    "index": 0
                  },
                  {
                    "id": "d48ea1cc-826d-45eb-9be9-982935d3b9b9",
                    "name": "InvoiceDataError",
                    "backgroundColor": "#bbcc00",
                    "index": 1
                  }
                ]
        autoFields:
          type: object
          properties:
            autoFieldDefinitions:
              type: array
              items:
                type: object
                properties:
                  autoFieldName:
                    type: string
                  dataTypeName:
                    type: string
                    description: name of data type of auto field
              example: |
                [
                  { "autoFieldName": "CurrentWorkflowOutcome", "dataTypeName": "String" },
                  { "autoFieldName": "CurrentWorkflowOutcomeName", "dataTypeName": "String" }
                ]
            autoFieldData:
              type: object
              description: object containing a map of auto field name to value
              example: |
                {
                  "CurrentWorkflowOutcome": "abc67123-5dfe-2a79-b965-ebd1a671c90a",
                  "CurrentWorkflowOutcomeName": "Started"
                }
    WorkflowActivityParameters:
      type: object
      properties:
        workflowInstanceId:
          type: string
          example: "ee3ea75e-e042-442e-b91a-8beb1f00c802"
        activityId:
          type: string
          example: "c262afa8-70b1-4eea-bc08-303c3c549bc8"
    WorkflowFinishedUserTaskList:
      type: object
      properties:
        tasks:
          type: array
          items:
            type: object
            properties:
              workflow:
                type: object
                properties:
                  workflowId:
                    type: string
                    example: "InvoiceApproval"
                  name:
                    type: string
                    example: "InvoiceApproval"
                  version:
                    type: integer
                    example: 1
              completingUser:
                type: string
                example: "user@simplifier.io"
              completingTime:
                type: string
                description: Timestamp (ISO 8601)
                example: "2023-06-30T08:23:01.27446Z"
              displayName:
                type: string
                example: "Gather Invoice Data by User Input"
              description:
                type: string
                example: "Gather Invoice Data by User Input"
              outcome:
                type: object
                properties:
                  backgroundColor:
                    type: string
                    description: Hex color code of background color of outcome
                    example: "#ffb200"
                  name:
                    type: string
                    example: "InvoiceDataCaptured"
                  textColor:
                    type: string
                    description: Hex color code of the outcome text
                    example: "#000000"
        count:
          type: integer
          example: 1
    WorkflowErrorMessage:
      type: object
      properties:
        message:
          type: string
          example: Error message string
  examples:
    WorkflowInstanceDetailsExampleWithoutVariableFilter:
      description: Response for a request without variable filter
      value: |
        {
          "id": "35fdd97b-fc4a-4330-b924-72a0b7b48d2f",
          "workflow": {
            "workflowId": "Workflow1",
            "name": "Demo Workflow",
            "version": 1,
            "description": "This is a demo workflow."
          },
          "currentOutcome": {
            "name": "Started",
            "backgroundColor": "#c14646",
            "textColor": "#000000"
          },
          "currentUserTask": {
            "activityName": "Task 1",
            "claimed": true,
            "claimingUser": "admin",
            "assignedUsers": [],
            "assignedGroups": [ "Group_1" ]
          },
          "currentActivity": {
            "activityType": "USERTASK",
            "id": "7ce1b2d1-1b15-494b-936c-65f397365cf4",
            "activityName": "Task 1"
          },
          "startedAt": "2024-03-14T14:51:07.941093+01:00",
          "startedBy": "admin",
          "lastChangeAt": "2024-03-14T17:16:52.28852+01:00",
          "lastChangeBy": "admin",
          "state": "RUNNING",
          "variableData": {
            "definitions": [
              {
                "id": "TestInt",
                "description": "An integer variable",
                "displayName": "TestInt",
                "dataTypeName": "Integer"
              },
              {
                "id": "TestString",
                "displayName": "TestString",
                "dataTypeName": "String"
              }
            ],
            "data": {
              "TestInt": 124312434,
              "TestString": "test"
            }
          }
        }
    WorkflowInstanceDetailsExampleWithVariableFilter:
      description: Response for a request with variable filter for 'TestString'
      value: |
        {
          "id": "35fdd97b-fc4a-4330-b924-72a0b7b48d2f",
          "workflow": {
            "workflowId": "Workflow1",
            "name": "Demo Workflow",
            "version": 1,
            "description": "This is a demo workflow."
          },
          "currentOutcome": {
            "name": "Started",
            "backgroundColor": "#c14646",
            "textColor": "#000000"
          },
          "currentUserTask": {
            "activityName": "Task 1",
            "claimed": true,
            "claimingUser": "admin",
            "assignedUsers": [],
            "assignedGroups": [ "Group_1" ]
          },
          "currentActivity": {
            "activityType": "USERTASK",
            "id": "7ce1b2d1-1b15-494b-936c-65f397365cf4",
            "activityName": "Task 1"
          },
          "startedAt": "2024-03-14T14:51:07.941093+01:00",
          "startedBy": "admin",
          "lastChangeAt": "2024-03-14T17:16:52.28852+01:00",
          "lastChangeBy": "admin",
          "state": "RUNNING",
          "variableValue": "test"
        }
    WorkflowInstanceListExampleWithoutVariableFilter:
      description: Response for a request without variable filter
      value: |
        {
          "instances": [
            {
              "id": "35fdd97b-fc4a-4330-b924-72a0b7b48d2f",
              "workflow": {
                "workflowId": "Workflow1",
                "name": "Demo Workflow",
                "version": 1,
                "description": "This is a demo workflow."
              },
              "currentOutcome": { "name": "Started", "backgroundColor": "#c14646", "textColor": "#000000" },
              "currentUserTask": {
                "activityName": "Task 1",
                "claimed": true,
                "claimingUser": "admin",
                "assignedUsers": [ ],
                "assignedGroups": [ "Group_1" ]
              },
              "currentActivity": { "activityType": "USERTASK", "id": "7ce1b2d1-1b15-494b-936c-65f397365cf4", "activityName": "Task 1" },
              "startedAt": "2024-03-14T14:51:07.941093+01:00",
              "startedBy": "admin",
              "lastChangeAt": "2024-03-14T17:16:52.28852+01:00",
              "lastChangeBy": "admin",
              "state": "RUNNING",
              "variableData": {
                "definitions": [
                  { "id": "TestInt", "description": "An integer variable", "displayName": "TestInt", "dataTypeName": "Integer" },
                  { "id": "TestString", "displayName": "TestString", "dataTypeName": "String" }
                ],
                "data": { "TestInt": 124312434, "TestString": "test" }
              }
            }
          ],
          "count": 1
        }
    WorkflowInstanceListExampleWithVariableFilter:
      description: Response for a request with variable filter for 'TestString'
      value: |
        {
          "instances": [
            {
              "id": "35fdd97b-fc4a-4330-b924-72a0b7b48d2f",
              "workflow": {
                "workflowId": "Workflow1",
                "name": "Demo Workflow",
                "version": 1,
                "description": "This is a demo workflow."
              },
              "currentOutcome": {
                "name": "Started",
                "backgroundColor": "#c14646",
                "textColor": "#000000"
              },
              "currentUserTask": {
                "activityName": "Task 1",
                "claimed": true,
                "claimingUser": "admin",
                "assignedUsers": [],
                "assignedGroups": [ "Group_1" ]
              },
              "currentActivity": {
                "activityType": "USERTASK",
                "id": "7ce1b2d1-1b15-494b-936c-65f397365cf4",
                "activityName": "Task 1"
              },
              "startedAt": "2024-03-14T14:51:07.941093+01:00",
              "startedBy": "admin",
              "lastChangeAt": "2024-03-14T17:16:52.28852+01:00",
              "lastChangeBy": "admin",
              "state": "RUNNING",
              "variableValue": "test"
            }
          ],
          "count": 1
        }
  parameters:
    WorkflowInstanceStatusFilterParam:
      name: instanceStatus
      in: query
      schema:
        type: string
        nullable: true
      description: "Comma seperated list of workflow instance states. Valid values are: Running, Finished, Error, Stopped, Terminated"
      examples:
        'Running':
          value: Running
        'Finished':
          value: Finished
        'Error':
          value: Error
        'Stopped':
          value: Stopped
        'Terminated':
          value: Terminated
        'Multiple':
          value:
            Running,Error,Stopped
    WorkflowAssignedUsersFilterParam:
      name: assignedUsers
      in: query
      schema:
        type: string
        nullable: true
      description: Comma seperated list of user names that are assigned to the current user task of the workflow. Workflow instances matching given users or groups will be returned.
      examples:
        'Single user':
          value: admin
        'Multiple users':
          value:
            admin,gast,testuser@testcompany.com
    WorkflowAssignedGroupsFilterParam:
      name: assignedGroups
      in: query
      schema:
        type: string
        nullable: true
      description: Comma seperated list of group names that are assigned to the current user task of the workflow. Workflow instances matching given users or groups will be returned.
      examples:
        'Single group':
          value: Group1
        'Multiple groups':
          value: Group1,Support
    WorkflowStartedByFilterParam:
      name: startedBy
      in: query
      schema:
        type: string
        nullable: true
      description: Comma seperated list of user names that started the workflow. Workflow instances matching given users will be returned.
      examples:
        'Single user':
          value: admin
        'Multiple users':
          value:
            admin,gast,testuser@testcompany.com
    WorkflowVariableNameFilterParam:
      name: variableName
      in: query
      schema:
        type: string
        nullable: true
      description: Name of a variable that should be the only variable included in the result (as JSON field "variableValue")
      example: VariableName
    WorkflowVariableValueFilterParam:
      name: variableValue
      in: query
      schema:
        type: string
        nullable: true
      description: Supposed value of the variable referenced by the variableName query parameter. The search is case insensitive.
      example: Variable value
    WorkflowOrderByParam:
      name: orderBy
      in: query
      schema:
        type: string
        nullable: true
      examples:
        'StartTime Descending':
          value: StartTime Desc
        'UpdateTime Descending':
          value: UpdateTime Desc
        'Workflow Descending':
          value: Workflow Desc
        'StartTime Ascending':
          value: StartTime Asc
        'UpdateTime Ascending':
          value: UpdateTime Asc
        'Workflow Ascending':
          value: Workflow Asc
        'Multiple Orders':
          value: Workflow Desc,UpdateTime Asc
      description: |
        Controls how the results will be sorted. If not given, the results will be ordered by Start Time Descending. 
        Valid orders are: StartTime, UpdateTime and Workflow (ordering by workflow id and version).
        To control the direction of the sorting, the keyword Asc or Desc can be added, e.g.: Workflow Asc.
        Multiple different orders can be combined if they are seperated by comma, e.g.: Workflow Desc, StartTime Asc.
    WorkflowTopParam:
      name: top
      in: query
      schema:
        type: integer
        nullable: true
        default: 10
      description: Parameter controlling page size of returned results
    WorkflowSkipParam:
      name: skip
      in: query
      schema:
        type: integer
        nullable: true
        default: 0
      description: Parameter controlling the number of list entries that will be skipped to get the returned results
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
