openapi: 3.0.0 info: description: "# flowable / flowəb(ə)l /\r\n\r\n- a compact and highly efficient\ \ workflow and Business Process Management (BPM) platform for developers, system\ \ admins and business users.\r\n- a lightning fast, tried and tested BPMN 2 process\ \ engine written in Java. It is Apache 2.0 licensed open source, with a committed\ \ community.\r\n- can run embedded in a Java application, or as a service on a\ \ server, a cluster, and in the cloud. It integrates perfectly with Spring. With\ \ a rich Java and REST API, it is the ideal engine for orchestrating human or\ \ system activities." version: v1 title: Flowable External Worker Job REST API contact: name: Flowable url: http://www.flowable.org/ license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html tags: - name: Acquire and Execute - name: Info and Query - name: Unacquire paths: /acquire/jobs: post: tags: - Acquire and Execute summary: Acquire External Worker Jobs description: '' operationId: acquireAndLockJobs requestBody: content: application/json: schema: $ref: '#/components/schemas/AcquireExternalWorkerJobRequest' responses: '200': description: Indicates the jobs were acquired and locked. content: application/json: schema: type: array items: $ref: '#/components/schemas/AcquiredExternalWorkerJobResponse' '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights acquire the jobs. /acquire/jobs/{jobId}/bpmnError: post: tags: - Acquire and Execute summary: Complete an External Worker Job with a BPMN Error description: '' operationId: bpmnErrorJob parameters: - name: jobId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobErrorRequest' responses: '204': description: Indicates the job was successfully completed. content: application/json: schema: type: object '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights complete the job. '404': description: Indicates the job does not exist. /acquire/jobs/{jobId}/cmmnTerminate: post: tags: - Acquire and Execute summary: Complete an External Worker Job with a cmmn terminate transition description: '' operationId: terminateCmmnJob parameters: - name: jobId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobTerminateRequest' responses: '204': description: Indicates the job was successfully transitioned. content: application/json: schema: type: object '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights complete the job. '404': description: Indicates the job does not exist. /acquire/jobs/{jobId}/complete: post: tags: - Acquire and Execute summary: Complete an External Worker Jobs description: '' operationId: completeJob parameters: - name: jobId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobCompleteRequest' responses: '204': description: Indicates the job was successfully completed. content: application/json: schema: type: object '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights complete the job. '404': description: Indicates the job does not exist. /acquire/jobs/{jobId}/fail: post: tags: - Acquire and Execute summary: Fail an External Worker Job description: '' operationId: failJob parameters: - name: jobId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobFailureRequest' responses: '204': description: Indicates the job was successfully completed. content: application/json: schema: type: object '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights complete the job. '404': description: Indicates the job does not exist. /jobs: get: tags: - Info and Query summary: List External Worker Jobs description: '' operationId: listExternalWorkerJobs parameters: - name: elementId in: query description: Only return jobs with the given elementId required: false schema: type: string - name: elementName in: query description: Only return jobs with the given elementName required: false schema: type: string - name: exceptionMessage in: query description: Only return jobs with the given exception message required: false schema: type: string - name: executionId in: query description: Only return jobs with the given executionId required: false schema: type: string - name: id in: query description: Only return job with the given id required: false schema: type: string - name: locked in: query description: Only return jobs that are locked required: false schema: type: boolean - name: order in: query description: From the paginate request. The sort order, either 'asc' or 'desc'. Defaults to 'asc'. required: false schema: type: string - name: processDefinitionId in: query description: Only return jobs with the given processDefinitionId required: false schema: type: string - name: processInstanceId in: query description: Only return jobs with the processInstanceId required: false schema: type: string - name: scopeDefinitionId in: query description: Only return jobs with the given scopeDefinitionId required: false schema: type: string - name: scopeId in: query description: Only return jobs with the given scopeId required: false schema: type: string - name: size in: query description: From the paginate request. Number of rows to fetch, starting from start. Defaults to 10. required: false schema: type: integer format: int32 - name: sort in: query description: Property to sort the results on required: false schema: type: string - name: start in: query description: From the paginate request. Index of the first row to fetch. Defaults to 0. required: false schema: type: integer format: int32 - name: subScopeId in: query description: Only return jobs with the given subScopeId required: false schema: type: string - name: tenantId in: query description: Only return jobs with the given tenant id required: false schema: type: string - name: tenantIdLike in: query description: Only return jobs with a tenantId like the given value required: false schema: type: string - name: unlocked in: query description: Only return jobs that are unlocked required: false schema: type: boolean - name: withException in: query description: Only return jobs with an exception required: false schema: type: boolean - name: withoutProcessInstanceId in: query description: Only return jobs without a process instance id required: false schema: type: boolean - name: withoutScopeId in: query description: Only return jobs without a scope id required: false schema: type: boolean - name: withoutScopeType in: query description: Only return jobs without a scope type required: false schema: type: boolean - name: withoutTenantId in: query description: Only return jobs without a tenantId required: false schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobCollectionResource' description: The field to sort by. Defaults to 'id'. responses: '200': description: Indicates the requested jobs were returned. content: application/json: schema: $ref: '#/components/schemas/DataResponseExternalWorkerJobResponse' '400': description: Indicates an illegal value has been used in a url query parameter. Status description contains additional details about the error. '403': description: Indicates the user does not have the rights to query for external worker jobs. /jobs/{jobId}: get: tags: - Info and Query summary: Get a single external worker job description: '' operationId: getExternalWorkerJob parameters: - name: jobId in: path required: true schema: type: string responses: '200': description: Indicates the requested job was returned. content: application/json: schema: $ref: '#/components/schemas/ExternalWorkerJobResponse' '403': description: Indicates the user does not have the rights access the job. '404': description: Indicates the requested job was not found. /unacquire/jobs: post: tags: - Unacquire summary: Unacquire External Worker Jobs description: '' operationId: unacquireJobs requestBody: $ref: '#/components/requestBodies/UnacquireExternalWorkerJobsRequest' responses: '200': description: successful operation content: application/json: schema: type: object '204': description: Indicates the jobs were unacquired. '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights to unacquire the jobs. /unacquire/jobs/{jobId}: post: tags: - Unacquire summary: Unaquire an External Worker Job description: '' operationId: unaquireJob parameters: - name: jobId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/UnacquireExternalWorkerJobsRequest' responses: '204': description: Indicates the job was successfully unaquired. content: application/json: schema: type: object '400': description: Indicates the request was invalid. '403': description: Indicates the user does not have the rights to unacquire the job. '404': description: Indicates the job does not exist. servers: - url: /flowable-rest/external-job-api components: requestBodies: UnacquireExternalWorkerJobsRequest: content: application/json: schema: $ref: '#/components/schemas/UnacquireExternalWorkerJobsRequest' securitySchemes: basicAuth: type: http scheme: basic schemas: AcquireExternalWorkerJobRequest: type: object required: - lockDuration - topic - workerId properties: topic: type: string example: order description: Acquire jobs with the given topic lockDuration: type: string example: PT10M description: The acquired jobs will be locked with this lock duration. ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours. numberOfTasks: type: integer format: int32 example: 1 description: The number of tasks that should be acquired. Default is 1. numberOfRetries: type: integer format: int32 example: 10 description: The number of retries if an optimistic lock exception occurs during acquiring. Default is 5 workerId: type: string example: orderWorker1 description: The id of the external worker that would be used for locking the job scopeType: type: string example: cmmn description: Only acquire jobs with the given scope type description: Request that is used for acquiring external worker jobs AcquiredExternalWorkerJobResponse: type: object required: - id - url properties: id: type: string example: '8' description: The id of the external job url: type: string example: http://localhost:8182/external-job-api/jobs/8 description: The url of the external job correlationId: type: string example: '50' description: The correlation id of the external job processInstanceId: type: string example: '5' description: The process instance id for the external job processDefinitionId: type: string example: customerProcess:1:4 description: The process definition id for the external job executionId: type: string example: '7' description: The execution id for the external job scopeId: type: string example: '20' description: The scope id for the external job subScopeId: type: string example: '21' description: The sub scope id for the external job scopeDefinitionId: type: string example: customerCase:1:39 description: The scope definition id for the external job scopeType: type: string example: cmmn description: The scope type for the external job elementId: type: string example: customer description: The id of the element in the model elementName: type: string example: Process Customer Task description: The name of the element in the model retries: type: integer format: int32 example: 3 description: The remaining number of retries exceptionMessage: type: string example: 'null' description: The exception message for the job dueDate: type: string format: date-time example: '2021-05-04T16:35:10.474Z' description: The due date for the job createTime: type: string format: date-time example: '2020-05-04T16:35:10.474Z' description: The creation time of the job tenantId: type: string example: flowable description: The tenant if of the job lockOwner: type: string example: worker1 description: The id of the lock owner. If not set then the job is not locked lockExpirationTime: type: string format: date-time example: '2020-05-04T16:35:10.474Z' description: The time when the lock expires variables: type: array description: The variables from the scope of the job items: $ref: '#/components/schemas/EngineRestVariable' DataResponse: type: object properties: data: type: array items: type: object total: type: integer format: int64 start: type: integer format: int32 sort: type: string order: type: string size: type: integer format: int32 DataResponseExternalWorkerJobResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ExternalWorkerJobResponse' total: type: integer format: int64 start: type: integer format: int32 sort: type: string order: type: string size: type: integer format: int32 EngineRestVariable: type: object properties: name: type: string example: myVariable description: Name of the variable type: type: string example: string description: Type of the variable. value: type: object example: test description: Value of the variable. valueUrl: type: string example: http://.... ExternalWorkerJobCollectionResource: type: object ExternalWorkerJobCompleteRequest: type: object required: - workerId properties: workerId: type: string description: The id of the external worker that executes the action. Must match the id of the worker who has most recently locked the job. variables: type: array description: The variables that should be passed to the job scope items: $ref: '#/components/schemas/EngineRestVariable' description: Request that is used for completing external worker jobs ExternalWorkerJobErrorRequest: type: object required: - workerId properties: workerId: type: string description: The id of the external worker that executes the action. Must match the id of the worker who has most recently locked the job. variables: type: array description: The variables that should be passed to the job scope items: $ref: '#/components/schemas/EngineRestVariable' errorCode: type: string description: The BPMN error code description: Request that is used for completing external worker jobs with a bpmn error ExternalWorkerJobFailureRequest: type: object required: - workerId properties: workerId: type: string description: The id of the external worker that reports the failure. Must match the id of the worker who has most recently locked the job. errorMessage: type: string example: Database not available description: Error message for the failure errorDetails: type: string description: Details for the failure retries: type: integer format: int32 description: The new number of retries. If not set it will be reduced by 1. If 0 the job will be moved ot the dead letter table and would no longer be available for acquiring. retryTimeout: type: string example: PT20M description: The timeout after which the job should be made available again. ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours. description: Request that is used for failing external worker jobs ExternalWorkerJobResponse: type: object required: - id - url properties: id: type: string example: '8' description: The id of the external job url: type: string example: http://localhost:8182/external-job-api/jobs/8 description: The url of the external job correlationId: type: string example: '50' description: The correlation id of the external job processInstanceId: type: string example: '5' description: The process instance id for the external job processDefinitionId: type: string example: customerProcess:1:4 description: The process definition id for the external job executionId: type: string example: '7' description: The execution id for the external job scopeId: type: string example: '20' description: The scope id for the external job subScopeId: type: string example: '21' description: The sub scope id for the external job scopeDefinitionId: type: string example: customerCase:1:39 description: The scope definition id for the external job scopeType: type: string example: cmmn description: The scope type for the external job elementId: type: string example: customer description: The id of the element in the model elementName: type: string example: Process Customer Task description: The name of the element in the model retries: type: integer format: int32 example: 3 description: The remaining number of retries exceptionMessage: type: string example: 'null' description: The exception message for the job dueDate: type: string format: date-time example: '2021-05-04T16:35:10.474Z' description: The due date for the job createTime: type: string format: date-time example: '2020-05-04T16:35:10.474Z' description: The creation time of the job tenantId: type: string example: flowable description: The tenant if of the job lockOwner: type: string example: worker1 description: The id of the lock owner. If not set then the job is not locked lockExpirationTime: type: string format: date-time example: '2020-05-04T16:35:10.474Z' description: The time when the lock expires ExternalWorkerJobTerminateRequest: type: object required: - workerId properties: workerId: type: string description: The id of the external worker that executes the action. Must match the id of the worker who has most recently locked the job. variables: type: array description: The variables that should be passed to the job scope items: $ref: '#/components/schemas/EngineRestVariable' description: Request that is used for terminating external worker jobs UnacquireExternalWorkerJobsRequest: type: object required: - workerId properties: workerId: type: string example: orderWorker1 description: The worker id for the external worker jobs to unaquire tenantId: type: string example: tenant1 description: The tenant id for the external worker jobs to unaquire description: Request that is used for unacquiring external worker jobs