diff --git a/README.md b/README.md index a818906eb..dc0876c66 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Nacos 2.0.3 License Apache 2.0 码匠君 - Version 2.5.4.110 + Version 2.5.4.120 Gitee star Gitee fork

diff --git a/configurations/docker/docker-compose/herodotus/.env b/configurations/docker/docker-compose/herodotus/.env index 6a4fc07dd..b8e3d7846 100644 --- a/configurations/docker/docker-compose/herodotus/.env +++ b/configurations/docker/docker-compose/herodotus/.env @@ -1,4 +1,4 @@ -VERSION=2.5.4.110 +VERSION=2.5.4.120 GATEWAY_SERVICE_NAME=eurynome-cloud-gateway GATEWAY_SERVICE_PORT=8847 UAA_SERVICE_NAME=eurynome-cloud-uaa diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 75d90e4ae..82c6b3469 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -35,7 +35,7 @@ cn.herodotus.eurynome dependencies - 2.5.4.110 + 2.5.4.120 pom eurynome-cloud-dependencies @@ -80,8 +80,7 @@ 1.18.20 3.9.1 - 2.9.2 - 1.6.2 + 1.5.10 6.6 @@ -93,7 +92,7 @@ 5.7.10 3.1.4 1.16.3 - 2.0.6 + 3.0.3 2.3.2 1.6.2 @@ -289,27 +288,29 @@ ${lombok.version} provided + - io.springfox - springfox-swagger2 - ${springfox.version} + org.springdoc + springdoc-openapi-common + ${springdoc.version} + - io.springfox - springfox-swagger-ui - ${springfox.version} + org.springdoc + springdoc-openapi-ui + ${springdoc.version} - + - io.swagger - swagger-annotations - ${swagger.version} + org.springdoc + springdoc-openapi-webflux-ui + ${springdoc.version} - + - io.swagger - swagger-models - ${swagger.version} + org.springdoc + springdoc-openapi-security + ${springdoc.version} @@ -373,10 +374,10 @@ JustAuth ${just-auth.verison} - + com.github.xiaoymin - knife4j-spring-ui + knife4j-springdoc-ui ${knife4j.version} @@ -505,7 +506,7 @@ yyyy-MM-dd HH:mm:ss - + false diff --git a/documents/guides/404.html b/documents/guides/404.html index ffa41d748..615768f0c 100644 --- a/documents/guides/404.html +++ b/documents/guides/404.html @@ -5,11 +5,11 @@ Eurynome Cloud - +

404

Looks like we've got some broken links.
Take me home
- + diff --git a/documents/guides/assets/js/app.a36212f7.js b/documents/guides/assets/js/app.7de48254.js similarity index 79% rename from documents/guides/assets/js/app.a36212f7.js rename to documents/guides/assets/js/app.7de48254.js index b6f161c80..d8d003aac 100644 --- a/documents/guides/assets/js/app.a36212f7.js +++ b/documents/guides/assets/js/app.7de48254.js @@ -1 +1 @@ -"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[143],{3131:(e,l,t)=>{t.d(l,{g:()=>r});var i=t(2009),d=t(6971),n=t(1598),s=t(1843);const r=[i.Z,d.Z,n.Z,s.Z]},9947:(e,l,t)=>{t.d(l,{p:()=>i});const i=[t(3051).Z]},4611:(e,l,t)=>{t.d(l,{l:()=>s});var i=t(8866),d=t(1263),n=t(6243);const s=[i.Z,d.Z,n.Z]},4150:(e,l,t)=>{t.d(l,{Z:()=>d});var i=t(6252);const d={404:(0,i.RC)((()=>t.e(491).then(t.bind(t,8491)))),Layout:(0,i.RC)((()=>t.e(293).then(t.bind(t,3293))))}},6056:(e,l,t)=>{t.d(l,{b:()=>d});var i=t(6252);const d={"v-8daa1a0e":(0,i.RC)((()=>t.e(509).then(t.bind(t,6797)))),"v-344b5769":(0,i.RC)((()=>t.e(861).then(t.bind(t,8497)))),"v-9a0d6c6c":(0,i.RC)((()=>t.e(247).then(t.bind(t,5190)))),"v-c0f957a0":(0,i.RC)((()=>t.e(781).then(t.bind(t,1687)))),"v-4cbee12b":(0,i.RC)((()=>t.e(967).then(t.bind(t,2324)))),"v-cff5f184":(0,i.RC)((()=>t.e(243).then(t.bind(t,2197)))),"v-6430ce6c":(0,i.RC)((()=>t.e(4).then(t.bind(t,683)))),"v-f283941e":(0,i.RC)((()=>t.e(658).then(t.bind(t,4653)))),"v-4331d874":(0,i.RC)((()=>t.e(979).then(t.bind(t,7276)))),"v-eef3d90a":(0,i.RC)((()=>t.e(701).then(t.bind(t,9744)))),"v-23340e69":(0,i.RC)((()=>t.e(152).then(t.bind(t,3311)))),"v-5fe0d252":(0,i.RC)((()=>t.e(188).then(t.bind(t,9735)))),"v-49381304":(0,i.RC)((()=>t.e(925).then(t.bind(t,2604)))),"v-5f81e486":(0,i.RC)((()=>t.e(951).then(t.bind(t,9138)))),"v-040481e0":(0,i.RC)((()=>t.e(365).then(t.bind(t,4749)))),"v-661abe0c":(0,i.RC)((()=>t.e(129).then(t.bind(t,6621)))),"v-25b47c13":(0,i.RC)((()=>t.e(446).then(t.bind(t,5658)))),"v-5b482e3b":(0,i.RC)((()=>t.e(961).then(t.bind(t,7350)))),"v-3706649a":(0,i.RC)((()=>t.e(88).then(t.bind(t,3881))))}},9706:(e,l,t)=>{t.d(l,{T:()=>i});const i={"v-8daa1a0e":()=>t.e(509).then(t.bind(t,6464)).then((({data:e})=>e)),"v-344b5769":()=>t.e(861).then(t.bind(t,484)).then((({data:e})=>e)),"v-9a0d6c6c":()=>t.e(247).then(t.bind(t,6281)).then((({data:e})=>e)),"v-c0f957a0":()=>t.e(781).then(t.bind(t,3597)).then((({data:e})=>e)),"v-4cbee12b":()=>t.e(967).then(t.bind(t,4363)).then((({data:e})=>e)),"v-cff5f184":()=>t.e(243).then(t.bind(t,7738)).then((({data:e})=>e)),"v-6430ce6c":()=>t.e(4).then(t.bind(t,890)).then((({data:e})=>e)),"v-f283941e":()=>t.e(658).then(t.bind(t,5517)).then((({data:e})=>e)),"v-4331d874":()=>t.e(979).then(t.bind(t,8002)).then((({data:e})=>e)),"v-eef3d90a":()=>t.e(701).then(t.bind(t,4954)).then((({data:e})=>e)),"v-23340e69":()=>t.e(152).then(t.bind(t,7341)).then((({data:e})=>e)),"v-5fe0d252":()=>t.e(188).then(t.bind(t,3133)).then((({data:e})=>e)),"v-49381304":()=>t.e(925).then(t.bind(t,6445)).then((({data:e})=>e)),"v-5f81e486":()=>t.e(951).then(t.bind(t,9865)).then((({data:e})=>e)),"v-040481e0":()=>t.e(365).then(t.bind(t,6424)).then((({data:e})=>e)),"v-661abe0c":()=>t.e(129).then(t.bind(t,5251)).then((({data:e})=>e)),"v-25b47c13":()=>t.e(446).then(t.bind(t,3166)).then((({data:e})=>e)),"v-5b482e3b":()=>t.e(961).then(t.bind(t,7149)).then((({data:e})=>e)),"v-3706649a":()=>t.e(88).then(t.bind(t,1801)).then((({data:e})=>e))}},4634:(e,l,t)=>{t.d(l,{g:()=>d});var i=t(4802);const d=[["v-8daa1a0e","/","",["/index.html","/README.md"]],["v-344b5769","/basic-knowledge/","介绍",["/basic-knowledge/index.html","/basic-knowledge/README.md"]],["v-9a0d6c6c","/basic-knowledge/spring-data-jpa.html","Spring Data JPA",["/basic-knowledge/spring-data-jpa","/basic-knowledge/spring-data-jpa.md"]],["v-c0f957a0","/documents/","介绍",["/documents/index.html","/documents/README.md"]],["v-4cbee12b","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.html","前端手册",["/documents/前端手册.html","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C","/documents/前端手册.md","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.md"]],["v-cff5f184","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.html","多环境配置",["/documents/多环境配置.html","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE","/documents/多环境配置.md","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.md"]],["v-6430ce6c","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.html","快速了解",["/documents/快速了解.html","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3","/documents/快速了解.md","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.md"]],["v-f283941e","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.html","数据初始化",["/documents/数据初始化.html","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96","/documents/数据初始化.md","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.md"]],["v-4331d874","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.html","新建子模块",["/documents/新建子模块.html","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97","/documents/新建子模块.md","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.md"]],["v-eef3d90a","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.html","更换数据库",["/documents/更换数据库.html","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93","/documents/更换数据库.md","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.md"]],["v-23340e69","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.html","环境部署",["/documents/环境部署.html","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2","/documents/环境部署.md","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.md"]],["v-5fe0d252","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.html","项目介绍",["/documents/项目介绍.html","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D","/documents/项目介绍.md","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.md"]],["v-49381304","/documents-athena/","介绍",["/documents-athena/index.html","/documents-athena/README.md"]],["v-5f81e486","/microservices/","介绍",["/microservices/index.html","/microservices/README.md"]],["v-040481e0","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.html","容器化技术",["/microservices/容器化技术.html","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF","/microservices/容器化技术.md","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.md"]],["v-661abe0c","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.html","容器化部署",["/microservices/容器化部署.html","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2","/microservices/容器化部署.md","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.md"]],["v-25b47c13","/others/","常见问题",["/others/index.html","/others/README.md"]],["v-5b482e3b","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html","更新日志",["/others/更新日志.html","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97","/others/更新日志.md","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.md"]],["v-3706649a","/404.html","",["/404"]]].reduce(((e,[l,t,d,n])=>(e.push({name:l,path:t,component:i.Y,meta:{title:d}},...n.map((e=>({path:e,redirect:t})))),e)),[{name:"404",path:"/:catchAll(.*)",component:i.Y}])},5472:(e,l,t)=>{t.d(l,{D:()=>i});const i=[{title:"",headers:[],path:"/",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[],path:"/basic-knowledge/",pathLocale:"/",extraFields:[]},{title:"Spring Data JPA",headers:[{level:2,title:"JPA",slug:"jpa",children:[{level:3,title:"Spring Data Jpa",slug:"spring-data-jpa-1",children:[]},{level:3,title:"Jpa、Hibernate、Spring Data Jpa三者之间的关系",slug:"jpa、hibernate、spring-data-jpa三者之间的关系",children:[]},{level:3,title:"Spring Data Jpa的java配置方案",slug:"spring-data-jpa的java配置方案",children:[]},{level:3,title:"Spring Boot整合Spring Data Jpa",slug:"spring-boot整合spring-data-jpa",children:[]}]},{level:2,title:"Spring Data Jpa的使用",slug:"spring-data-jpa的使用",children:[{level:3,title:"Spring Data Jpa UML类图",slug:"spring-data-jpa-uml类图",children:[]},{level:3,title:"简单的REST CRUD示例",slug:"简单的rest-crud示例",children:[]}]},{level:2,title:"Spring Data Jpa使用详解",slug:"spring-data-jpa使用详解",children:[{level:3,title:"Spring Data查询方法",slug:"spring-data查询方法",children:[]},{level:3,title:"查询方法",slug:"查询方法",children:[]},{level:3,title:"多表查询",slug:"多表查询",children:[]}]},{level:2,title:"审计Auditing",slug:"审计auditing",children:[{level:3,title:"实现AuditorAware接口",slug:"实现auditoraware接口",children:[]},{level:3,title:"启用Jpa审计功能",slug:"启用jpa审计功能",children:[]}]}],path:"/basic-knowledge/spring-data-jpa.html",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[{level:2,title:"总体架构",slug:"总体架构",children:[]},{level:2,title:"功能演示",slug:"功能演示",children:[{level:3,title:"[1]、基于URL的方法级动态权限配置",slug:"_1-、基于url的方法级动态权限配置",children:[]},{level:3,title:"[2]、服务调用链监控",slug:"_2-、服务调用链监控",children:[]}]},{level:2,title:"版本号说明",slug:"版本号说明",children:[]},{level:2,title:"交流反馈",slug:"交流反馈",children:[]}],path:"/documents/",pathLocale:"/",extraFields:[]},{title:"前端手册",headers:[{level:2,title:"前端框架",slug:"前端框架",children:[]},{level:2,title:"基础框架组件",slug:"基础框架组件",children:[]},{level:2,title:"表单校验组件",slug:"表单校验组件",children:[]},{level:2,title:"离线存储组件",slug:"离线存储组件",children:[]},{level:2,title:"消息提示框组件",slug:"消息提示框组件",children:[]},{level:2,title:"工作流编辑器组件",slug:"工作流编辑器组件",children:[]},{level:2,title:"通用工具库组件",slug:"通用工具库组件",children:[]},{level:2,title:"图标库",slug:"图标库",children:[]}],path:"/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.html",pathLocale:"/",extraFields:[]},{title:"多环境配置",headers:[{level:2,title:"什么是多环境配置?",slug:"什么是多环境配置",children:[]},{level:2,title:"Maven 多环境配置",slug:"maven-多环境配置",children:[]},{level:2,title:"Spring Boot 多环境配置",slug:"spring-boot-多环境配置",children:[{level:3,title:"Spring Boot 环境设置机制",slug:"spring-boot-环境设置机制",children:[]},{level:3,title:"配置多环境",slug:"配置多环境",children:[]},{level:3,title:"指定环境",slug:"指定环境",children:[]},{level:3,title:"单一文件写法",slug:"单一文件写法",children:[]}]},{level:2,title:"Nacos 多环境配置",slug:"nacos-多环境配置",children:[{level:3,title:"Data Id",slug:"data-id",children:[]},{level:3,title:"Group",slug:"group",children:[]},{level:3,title:"Namespace",slug:"namespace",children:[]}]},{level:2,title:"Docker和K8S 多环境配置",slug:"docker和k8s-多环境配置",children:[]},{level:2,title:"Eurynome Cloud 的多环境配置",slug:"eurynome-cloud-的多环境配置",children:[{level:3,title:"Eurynome Cloud 中的Maven多环境配置",slug:"eurynome-cloud-中的maven多环境配置",children:[]},{level:3,title:"Eurynome Cloud 中的Spring Boot和Nacos多环境配置",slug:"eurynome-cloud-中的spring-boot和nacos多环境配置",children:[]}]}],path:"/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.html",pathLocale:"/",extraFields:[]},{title:"快速了解",headers:[{level:2,title:"项目简介",slug:"项目简介",children:[]},{level:2,title:"主要特性",slug:"主要特性",children:[]},{level:2,title:"技术选型",slug:"技术选型",children:[]},{level:2,title:"内置功能",slug:"内置功能",children:[]}],path:"/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.html",pathLocale:"/",extraFields:[]},{title:"数据初始化",headers:[{level:2,title:"系统初次部署数据库初始化内容",slug:"系统初次部署数据库初始化内容",children:[]},{level:2,title:"数据表及数据初始化说明",slug:"数据表及数据初始化说明",children:[{level:3,title:"[1]、OAuth2 标准表结构的创建",slug:"_1-、oauth2-标准表结构的创建",children:[]},{level:3,title:"[2]、服务中涉及业务表的创建",slug:"_2-、服务中涉及业务表的创建",children:[]},{level:3,title:"[3]、个别View或函数的创建",slug:"_3-、个别view或函数的创建",children:[]},{level:3,title:"[4]、默认用户、角色等数据的初始化",slug:"_4-、默认用户、角色等数据的初始化",children:[]},{level:3,title:"[5]、服务Rest API接口数据初始化",slug:"_5-、服务rest-api接口数据初始化",children:[]}]},{level:2,title:"数据表和数据自动初始化",slug:"数据表和数据自动初始化",children:[{level:3,title:"解决办法",slug:"解决办法",children:[]},{level:3,title:"具体步骤",slug:"具体步骤",children:[]}]},{level:2,title:"系统默认账号",slug:"系统默认账号",children:[]}],path:"/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.html",pathLocale:"/",extraFields:[]},{title:"新建子模块",headers:[{level:2,title:"在现有工程内,新建常规模块",slug:"在现有工程内-新建常规模块",children:[{level:3,title:"手工新建子模块(非微服务模块)",slug:"手工新建子模块-非微服务模块",children:[]},{level:3,title:"IDEA新建子模块(非微服务模块)",slug:"idea新建子模块-非微服务模块",children:[]}]},{level:2,title:"在现有工程内,新建微服务模块",slug:"在现有工程内-新建微服务模块",children:[{level:3,title:"手工新建子模块(非常规模块)",slug:"手工新建子模块-非常规模块",children:[]},{level:3,title:"IDEA新建子模块(非常规模块)",slug:"idea新建子模块-非常规模块",children:[]}]},{level:2,title:"在现有工程外,新建微服务独立模块工程",slug:"在现有工程外-新建微服务独立模块工程",children:[]}],path:"/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.html",pathLocale:"/",extraFields:[]},{title:"更换数据库",headers:[{level:2,title:"为什么默认使用PostgreSQL数据库?",slug:"为什么默认使用postgresql数据库",children:[{level:3,title:"PostgreSQL VS MySQL",slug:"postgresql-vs-mysql",children:[]},{level:3,title:"PostgreSQL相对于MySQL的优势",slug:"postgresql相对于mysql的优势",children:[]},{level:3,title:"MySQL相对于PostgreSQL的优势",slug:"mysql相对于postgresql的优势",children:[]},{level:3,title:"总结",slug:"总结",children:[]}]},{level:2,title:"spring-boot-starter-data-jpa 更换数据库方式",slug:"spring-boot-starter-data-jpa-更换数据库方式",children:[]},{level:2,title:"Eurynome Cloud 更换数据库方式",slug:"eurynome-cloud-更换数据库方式",children:[{level:3,title:"步骤一:判断是否需要添加数据库方言配置",slug:"步骤一-判断是否需要添加数据库方言配置",children:[]},{level:3,title:"步骤二:修改环境参数",slug:"步骤二-修改环境参数",children:[]},{level:3,title:"步骤三:修改pom.xml",slug:"步骤三-修改pom-xml",children:[]},{level:3,title:"步骤四:添加数据库JDBC Driver",slug:"步骤四-添加数据库jdbc-driver",children:[]},{level:3,title:"步骤五:编译工程代码",slug:"步骤五-编译工程代码",children:[]}]}],path:"/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.html",pathLocale:"/",extraFields:[]},{title:"环境部署",headers:[{level:2,title:"准备工作",slug:"准备工作",children:[{level:3,title:"后端运行所需的基础设施",slug:"后端运行所需的基础设施",children:[]},{level:3,title:"前端运行所需的基础设施",slug:"前端运行所需的基础设施",children:[]}]},{level:2,title:"运行系统",slug:"运行系统",children:[{level:3,title:"后端运行",slug:"后端运行",children:[]},{level:3,title:"前端运行",slug:"前端运行",children:[]}]}],path:"/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.html",pathLocale:"/",extraFields:[]},{title:"项目介绍",headers:[{level:2,title:"工程结构",slug:"工程结构",children:[{level:3,title:"后端工程结构",slug:"后端工程结构",children:[]}]},{level:2,title:"核心技术",slug:"核心技术",children:[{level:3,title:"后端核心技术",slug:"后端核心技术",children:[]},{level:3,title:"前端核心技术",slug:"前端核心技术",children:[]}]},{level:2,title:"版本关系",slug:"版本关系",children:[{level:3,title:"组件版本关系",slug:"组件版本关系",children:[]},{level:3,title:"毕业版本关系(推荐使用)",slug:"毕业版本关系-推荐使用",children:[]}]},{level:2,title:"功能介绍",slug:"功能介绍",children:[{level:3,title:"[1]、统一安全认证中心",slug:"_1-、统一安全认证中心",children:[]},{level:3,title:"[2]、统一服务访问网关",slug:"_2-、统一服务访问网关",children:[]},{level:3,title:"[3]、微服务架构支撑",slug:"_3-、微服务架构支撑",children:[]},{level:3,title:"[4]、微服务运行监控",slug:"_4-、微服务运行监控",children:[]},{level:3,title:"[5]、数据自动化处理",slug:"_5-、数据自动化处理",children:[]},{level:3,title:"[6]、服务开发支撑",slug:"_6-、服务开发支撑",children:[]},{level:3,title:"[7]、信息发送集成",slug:"_7-、信息发送集成",children:[]},{level:3,title:"[8]、内容审核集成",slug:"_8-、内容审核集成",children:[]}]}],path:"/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.html",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[{level:2,title:"Athena 是什么?",slug:"athena-是什么",children:[]},{level:2,title:"Athena 不是什么?",slug:"athena-不是什么",children:[]},{level:2,title:"为什么 Athena 和 Eurynome Cloud 共享代码?",slug:"为什么-athena-和-eurynome-cloud-共享代码",children:[]},{level:2,title:"为什么构建 Athena?",slug:"为什么构建-athena",children:[]}],path:"/documents-athena/",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[],path:"/microservices/",pathLocale:"/",extraFields:[]},{title:"容器化技术",headers:[{level:2,title:"Docker能解决什么问题?",slug:"docker能解决什么问题",children:[{level:3,title:"麻烦的环境配置",slug:"麻烦的环境配置",children:[]},{level:3,title:"现在的应用程序",slug:"现在的应用程序",children:[]},{level:3,title:"新架构的挑战",slug:"新架构的挑战",children:[]},{level:3,title:"统一的管理",slug:"统一的管理",children:[]}]},{level:2,title:"“容器”",slug:"容器",children:[{level:3,title:"虚拟化技术",slug:"虚拟化技术",children:[]},{level:3,title:"容器技术",slug:"容器技术",children:[]}]},{level:2,title:"Docker",slug:"docker",children:[{level:3,title:"Docker架构",slug:"docker架构",children:[]},{level:3,title:"Docker底层实现",slug:"docker底层实现",children:[]},{level:3,title:"Docker核心技术",slug:"docker核心技术",children:[]},{level:3,title:"Docker VS VM",slug:"docker-vs-vm",children:[]}]}],path:"/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.html",pathLocale:"/",extraFields:[]},{title:"容器化部署",headers:[{level:2,title:"本地容器部署",slug:"本地容器部署",children:[{level:3,title:"[1]、本地Docker安装(Windows版)",slug:"_1-、本地docker安装-windows版",children:[]},{level:3,title:"[2]、安装配置MySQL",slug:"_2-、安装配置mysql",children:[]},{level:3,title:"[2]、安装配置PostgreSQL",slug:"_2-、安装配置postgresql",children:[]},{level:3,title:"[3]、安装配置Redis",slug:"_3-、安装配置redis",children:[]},{level:3,title:"[4]、部署Kafka、Zookeeper、Nacos、ELK、Sentinel Dashboard",slug:"_4-、部署kafka、zookeeper、nacos、elk、sentinel-dashboard",children:[]},{level:3,title:"[5]、部署Skywalking",slug:"_5-、部署skywalking",children:[]},{level:3,title:"[6]、服务打包部署",slug:"_6-、服务打包部署",children:[]}]},{level:2,title:"服务器容器部署",slug:"服务器容器部署",children:[]},{level:2,title:"Docker打包设计",slug:"docker打包设计",children:[{level:3,title:"Eurynome Cloud Docker 打包设计初衷",slug:"eurynome-cloud-docker-打包设计初衷",children:[]},{level:3,title:"Eurynome Cloud Docker 打包的设计",slug:"eurynome-cloud-docker-打包的设计",children:[]},{level:3,title:"Eurynome Cloud Docker 打包使用方法",slug:"eurynome-cloud-docker-打包使用方法",children:[]}]}],path:"/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.html",pathLocale:"/",extraFields:[]},{title:"常见问题",headers:[{level:2,title:"Redis",slug:"redis",children:[{level:3,title:"[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问",slug:"_1-、本地redis使用127-0-0-1可以访问-使用ip地址无法访问",children:[]},{level:3,title:"[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required",slug:"_2-、io-lettuce-core-rediscommandexecutionexception-noauth-authentication-required",children:[]},{level:3,title:"[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>",slug:"_3-、noauth-hello-must-be-called-with-the-client-already-authenticated-otherwise-the-hello-auth-user",children:[]}]}],path:"/others/",pathLocale:"/",extraFields:[]},{title:"更新日志",headers:[{level:2,title:"v2.5.4.110",slug:"v2-5-4-110",children:[]},{level:2,title:"v2.5.4.100",slug:"v2-5-4-100",children:[]},{level:2,title:"v2.5.4.90",slug:"v2-5-4-90",children:[]},{level:2,title:"v2.5.4.80",slug:"v2-5-4-80",children:[]},{level:2,title:"v2.5.4.65",slug:"v2-5-4-65",children:[]},{level:2,title:"v2.5.4.60",slug:"v2-5-4-60",children:[]},{level:2,title:"v2.5.4.55",slug:"v2-5-4-55",children:[]},{level:2,title:"v2.5.4.50",slug:"v2-5-4-50",children:[]},{level:2,title:"v2.5.4.40",slug:"v2-5-4-40",children:[]},{level:2,title:"v2.5.4.30",slug:"v2-5-4-30",children:[]},{level:2,title:"v2.5.4.20",slug:"v2-5-4-20",children:[]},{level:2,title:"v2.5.4.10",slug:"v2-5-4-10",children:[]},{level:2,title:"v2.5.3.60",slug:"v2-5-3-60",children:[]},{level:2,title:"v2.5.3.50",slug:"v2-5-3-50",children:[]},{level:2,title:"v2.5.3.40",slug:"v2-5-3-40",children:[]},{level:2,title:"v2.5.3.30",slug:"v2-5-3-30",children:[]},{level:2,title:"v2.5.3.10",slug:"v2-5-3-10",children:[]},{level:2,title:"2.5.2.40",slug:"_2-5-2-40",children:[]},{level:2,title:"v2.5.2.30",slug:"v2-5-2-30",children:[]},{level:2,title:"v2.5.2.25",slug:"v2-5-2-25",children:[]},{level:2,title:"v2.5.2.20",slug:"v2-5-2-20",children:[]},{level:2,title:"v2.5.1.0",slug:"v2-5-1-0",children:[]},{level:2,title:"v2.4.5.60",slug:"v2-4-5-60",children:[]},{level:2,title:"v2.4.5.48",slug:"v2-4-5-48",children:[]}],path:"/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html",pathLocale:"/",extraFields:[]},{title:"",headers:[],path:"/404.html",pathLocale:"/",extraFields:[]}]},5220:(e,l,t)=>{t.d(l,{H:()=>i});const i={base:"/eurynome-cloud/",lang:"zh-CN",title:"Eurynome Cloud",description:"Eurynome Cloud, 在线文档, 微服务, 微服务架构, Spring Boot,Spring Cloud,Spring Cloud Alibaba, Spring Security, OAuth 2, Skywalking, Nacos",head:[["link",{rel:"icon",href:"/eurynome-cloud/images/logo.png"}],["meta",{name:"keywords",content:"Eurynome Cloud,微服务,Spring Boot,Spirng Cloud,Spring Cloud Alibaba,Spring Security,OAuth2,Nacos,Skywalking"}]],locales:{}}},2232:(e,l,t)=>{t.d(l,{f:()=>i});const i={logo:"/images/logo.png",darkMode:!0,lastUpdatedText:"更新时间",contributorsText:"贡献者",navbar:[{text:"指南",link:"/documents/"},{text:"单体版",link:"/documents-athena/"},{text:"微服务技术栈",link:"/microservices/"},{text:"了解更多",children:[{text:"延伸",children:[{text:"了解基础知识",link:"/basic-knowledge/"}]},{text:"帮助",children:[{text:"我要提问",link:"https://gitee.com/herodotus/eurynome-cloud/issues"},{text:"常见问题",link:"/others/README.md"},{text:"更新日志",link:"/others/更新日志.md"},{text:"加入QQ群",link:"https://jq.qq.com/?_wv=1027&k=bIerJVy8"}]}]},{text:"Gitee",children:[{text:"后端源码",link:"https://gitee.com/herodotus/eurynome-cloud",target:"_blank"},{text:"前端源码",link:"https://gitee.com/herodotus/eurynome-cloud-ui",target:"_blank"},{text:"单体版源码",link:"https://gitee.com/herodotus/herodotus-cloud-athena",target:"_blank"}]},{text:"Github",children:[{text:"后端源码",link:"https://github.com/herodotus-cloud/eurynome-cloud",target:"_blank"},{text:"前端源码",link:"https://github.com/herodotus-cloud/eurynome-cloud-ui",target:"_blank"},{text:"单体版源码",link:"https://github.com/herodotus-cloud/herodotus-cloud-athena",target:"_blank"}]}],sidebar:{"/documents/":[{text:"指南",children:["/documents/README.md","/documents/快速了解.md","/documents/项目介绍.md","/documents/环境部署.md"]},{text:"后端手册",children:["/documents/数据初始化.md","/documents/更换数据库.md","/documents/多环境配置.md","/documents/新建子模块.md"]},{text:"前端手册",children:["/documents/前端手册.md"]}],"/documents-athena/":[{text:"单体版",children:["/documents-athena/README.md"]}],"/microservices/":[{text:"微服务技术栈",children:["/microservices/README.md","/microservices/容器化技术.md","/microservices/容器化部署.md"]}],"/basic-knowledge/":[{text:"基础知识",children:["/basic-knowledge/README.md","/basic-knowledge/spring-data-jpa.md"]}],"/others/":[{text:"其它内容",children:["/others/README.md","/others/更新日志.md"]}]},locales:{"/":{selectLanguageName:"English"}},repo:null,selectLanguageText:"Languages",selectLanguageAriaLabel:"Select language",sidebarDepth:2,editLink:!0,editLinkText:"Edit this page",lastUpdated:!0,contributors:!0,notFound:["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],backToHome:"Take me home",openInNewWindow:"open in new window",toggleDarkMode:"toggle dark mode",toggleSidebar:"toggle sidebar"}}},e=>{e.O(0,[512,567],(()=>(5698,e(e.s=5698)))),e.O()}]); \ No newline at end of file +"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[143],{3131:(e,l,t)=>{t.d(l,{g:()=>r});var i=t(2009),d=t(6971),n=t(1598),s=t(1843);const r=[i.Z,d.Z,n.Z,s.Z]},9947:(e,l,t)=>{t.d(l,{p:()=>i});const i=[t(3051).Z]},4611:(e,l,t)=>{t.d(l,{l:()=>s});var i=t(8866),d=t(1263),n=t(6243);const s=[i.Z,d.Z,n.Z]},4150:(e,l,t)=>{t.d(l,{Z:()=>d});var i=t(6252);const d={404:(0,i.RC)((()=>t.e(491).then(t.bind(t,8491)))),Layout:(0,i.RC)((()=>t.e(293).then(t.bind(t,3293))))}},6056:(e,l,t)=>{t.d(l,{b:()=>d});var i=t(6252);const d={"v-8daa1a0e":(0,i.RC)((()=>t.e(509).then(t.bind(t,6797)))),"v-344b5769":(0,i.RC)((()=>t.e(861).then(t.bind(t,8497)))),"v-9a0d6c6c":(0,i.RC)((()=>t.e(247).then(t.bind(t,5190)))),"v-c0f957a0":(0,i.RC)((()=>t.e(781).then(t.bind(t,3544)))),"v-4cbee12b":(0,i.RC)((()=>t.e(967).then(t.bind(t,2324)))),"v-cff5f184":(0,i.RC)((()=>t.e(243).then(t.bind(t,2197)))),"v-6430ce6c":(0,i.RC)((()=>t.e(4).then(t.bind(t,683)))),"v-f283941e":(0,i.RC)((()=>t.e(658).then(t.bind(t,4653)))),"v-4331d874":(0,i.RC)((()=>t.e(979).then(t.bind(t,7276)))),"v-eef3d90a":(0,i.RC)((()=>t.e(701).then(t.bind(t,9744)))),"v-23340e69":(0,i.RC)((()=>t.e(152).then(t.bind(t,3311)))),"v-5fe0d252":(0,i.RC)((()=>t.e(188).then(t.bind(t,9735)))),"v-49381304":(0,i.RC)((()=>t.e(925).then(t.bind(t,2604)))),"v-5f81e486":(0,i.RC)((()=>t.e(951).then(t.bind(t,9138)))),"v-040481e0":(0,i.RC)((()=>t.e(365).then(t.bind(t,4749)))),"v-661abe0c":(0,i.RC)((()=>t.e(129).then(t.bind(t,6621)))),"v-25b47c13":(0,i.RC)((()=>t.e(446).then(t.bind(t,5564)))),"v-5b482e3b":(0,i.RC)((()=>t.e(961).then(t.bind(t,1631)))),"v-3706649a":(0,i.RC)((()=>t.e(88).then(t.bind(t,3881))))}},9706:(e,l,t)=>{t.d(l,{T:()=>i});const i={"v-8daa1a0e":()=>t.e(509).then(t.bind(t,6464)).then((({data:e})=>e)),"v-344b5769":()=>t.e(861).then(t.bind(t,484)).then((({data:e})=>e)),"v-9a0d6c6c":()=>t.e(247).then(t.bind(t,6281)).then((({data:e})=>e)),"v-c0f957a0":()=>t.e(781).then(t.bind(t,3597)).then((({data:e})=>e)),"v-4cbee12b":()=>t.e(967).then(t.bind(t,4363)).then((({data:e})=>e)),"v-cff5f184":()=>t.e(243).then(t.bind(t,7738)).then((({data:e})=>e)),"v-6430ce6c":()=>t.e(4).then(t.bind(t,890)).then((({data:e})=>e)),"v-f283941e":()=>t.e(658).then(t.bind(t,5517)).then((({data:e})=>e)),"v-4331d874":()=>t.e(979).then(t.bind(t,8002)).then((({data:e})=>e)),"v-eef3d90a":()=>t.e(701).then(t.bind(t,4954)).then((({data:e})=>e)),"v-23340e69":()=>t.e(152).then(t.bind(t,7341)).then((({data:e})=>e)),"v-5fe0d252":()=>t.e(188).then(t.bind(t,3133)).then((({data:e})=>e)),"v-49381304":()=>t.e(925).then(t.bind(t,6445)).then((({data:e})=>e)),"v-5f81e486":()=>t.e(951).then(t.bind(t,9865)).then((({data:e})=>e)),"v-040481e0":()=>t.e(365).then(t.bind(t,6424)).then((({data:e})=>e)),"v-661abe0c":()=>t.e(129).then(t.bind(t,5251)).then((({data:e})=>e)),"v-25b47c13":()=>t.e(446).then(t.bind(t,3166)).then((({data:e})=>e)),"v-5b482e3b":()=>t.e(961).then(t.bind(t,7149)).then((({data:e})=>e)),"v-3706649a":()=>t.e(88).then(t.bind(t,1801)).then((({data:e})=>e))}},4634:(e,l,t)=>{t.d(l,{g:()=>d});var i=t(4802);const d=[["v-8daa1a0e","/","",["/index.html","/README.md"]],["v-344b5769","/basic-knowledge/","介绍",["/basic-knowledge/index.html","/basic-knowledge/README.md"]],["v-9a0d6c6c","/basic-knowledge/spring-data-jpa.html","Spring Data JPA",["/basic-knowledge/spring-data-jpa","/basic-knowledge/spring-data-jpa.md"]],["v-c0f957a0","/documents/","介绍",["/documents/index.html","/documents/README.md"]],["v-4cbee12b","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.html","前端手册",["/documents/前端手册.html","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C","/documents/前端手册.md","/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.md"]],["v-cff5f184","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.html","多环境配置",["/documents/多环境配置.html","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE","/documents/多环境配置.md","/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.md"]],["v-6430ce6c","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.html","快速了解",["/documents/快速了解.html","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3","/documents/快速了解.md","/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.md"]],["v-f283941e","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.html","数据初始化",["/documents/数据初始化.html","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96","/documents/数据初始化.md","/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.md"]],["v-4331d874","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.html","新建子模块",["/documents/新建子模块.html","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97","/documents/新建子模块.md","/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.md"]],["v-eef3d90a","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.html","更换数据库",["/documents/更换数据库.html","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93","/documents/更换数据库.md","/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.md"]],["v-23340e69","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.html","环境部署",["/documents/环境部署.html","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2","/documents/环境部署.md","/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.md"]],["v-5fe0d252","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.html","项目介绍",["/documents/项目介绍.html","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D","/documents/项目介绍.md","/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.md"]],["v-49381304","/documents-athena/","介绍",["/documents-athena/index.html","/documents-athena/README.md"]],["v-5f81e486","/microservices/","介绍",["/microservices/index.html","/microservices/README.md"]],["v-040481e0","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.html","容器化技术",["/microservices/容器化技术.html","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF","/microservices/容器化技术.md","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.md"]],["v-661abe0c","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.html","容器化部署",["/microservices/容器化部署.html","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2","/microservices/容器化部署.md","/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.md"]],["v-25b47c13","/others/","常见问题",["/others/index.html","/others/README.md"]],["v-5b482e3b","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html","更新日志",["/others/更新日志.html","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97","/others/更新日志.md","/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.md"]],["v-3706649a","/404.html","",["/404"]]].reduce(((e,[l,t,d,n])=>(e.push({name:l,path:t,component:i.Y,meta:{title:d}},...n.map((e=>({path:e,redirect:t})))),e)),[{name:"404",path:"/:catchAll(.*)",component:i.Y}])},5472:(e,l,t)=>{t.d(l,{D:()=>i});const i=[{title:"",headers:[],path:"/",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[],path:"/basic-knowledge/",pathLocale:"/",extraFields:[]},{title:"Spring Data JPA",headers:[{level:2,title:"JPA",slug:"jpa",children:[{level:3,title:"Spring Data Jpa",slug:"spring-data-jpa-1",children:[]},{level:3,title:"Jpa、Hibernate、Spring Data Jpa三者之间的关系",slug:"jpa、hibernate、spring-data-jpa三者之间的关系",children:[]},{level:3,title:"Spring Data Jpa的java配置方案",slug:"spring-data-jpa的java配置方案",children:[]},{level:3,title:"Spring Boot整合Spring Data Jpa",slug:"spring-boot整合spring-data-jpa",children:[]}]},{level:2,title:"Spring Data Jpa的使用",slug:"spring-data-jpa的使用",children:[{level:3,title:"Spring Data Jpa UML类图",slug:"spring-data-jpa-uml类图",children:[]},{level:3,title:"简单的REST CRUD示例",slug:"简单的rest-crud示例",children:[]}]},{level:2,title:"Spring Data Jpa使用详解",slug:"spring-data-jpa使用详解",children:[{level:3,title:"Spring Data查询方法",slug:"spring-data查询方法",children:[]},{level:3,title:"查询方法",slug:"查询方法",children:[]},{level:3,title:"多表查询",slug:"多表查询",children:[]}]},{level:2,title:"审计Auditing",slug:"审计auditing",children:[{level:3,title:"实现AuditorAware接口",slug:"实现auditoraware接口",children:[]},{level:3,title:"启用Jpa审计功能",slug:"启用jpa审计功能",children:[]}]}],path:"/basic-knowledge/spring-data-jpa.html",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[{level:2,title:"总体架构",slug:"总体架构",children:[]},{level:2,title:"功能演示",slug:"功能演示",children:[{level:3,title:"[1]、基于URL的方法级动态权限配置",slug:"_1-、基于url的方法级动态权限配置",children:[]},{level:3,title:"[2]、服务调用链监控",slug:"_2-、服务调用链监控",children:[]}]},{level:2,title:"版本号说明",slug:"版本号说明",children:[]},{level:2,title:"交流反馈",slug:"交流反馈",children:[]}],path:"/documents/",pathLocale:"/",extraFields:[]},{title:"前端手册",headers:[{level:2,title:"前端框架",slug:"前端框架",children:[]},{level:2,title:"基础框架组件",slug:"基础框架组件",children:[]},{level:2,title:"表单校验组件",slug:"表单校验组件",children:[]},{level:2,title:"离线存储组件",slug:"离线存储组件",children:[]},{level:2,title:"消息提示框组件",slug:"消息提示框组件",children:[]},{level:2,title:"工作流编辑器组件",slug:"工作流编辑器组件",children:[]},{level:2,title:"通用工具库组件",slug:"通用工具库组件",children:[]},{level:2,title:"图标库",slug:"图标库",children:[]}],path:"/documents/%E5%89%8D%E7%AB%AF%E6%89%8B%E5%86%8C.html",pathLocale:"/",extraFields:[]},{title:"多环境配置",headers:[{level:2,title:"什么是多环境配置?",slug:"什么是多环境配置",children:[]},{level:2,title:"Maven 多环境配置",slug:"maven-多环境配置",children:[]},{level:2,title:"Spring Boot 多环境配置",slug:"spring-boot-多环境配置",children:[{level:3,title:"Spring Boot 环境设置机制",slug:"spring-boot-环境设置机制",children:[]},{level:3,title:"配置多环境",slug:"配置多环境",children:[]},{level:3,title:"指定环境",slug:"指定环境",children:[]},{level:3,title:"单一文件写法",slug:"单一文件写法",children:[]}]},{level:2,title:"Nacos 多环境配置",slug:"nacos-多环境配置",children:[{level:3,title:"Data Id",slug:"data-id",children:[]},{level:3,title:"Group",slug:"group",children:[]},{level:3,title:"Namespace",slug:"namespace",children:[]}]},{level:2,title:"Docker和K8S 多环境配置",slug:"docker和k8s-多环境配置",children:[]},{level:2,title:"Eurynome Cloud 的多环境配置",slug:"eurynome-cloud-的多环境配置",children:[{level:3,title:"Eurynome Cloud 中的Maven多环境配置",slug:"eurynome-cloud-中的maven多环境配置",children:[]},{level:3,title:"Eurynome Cloud 中的Spring Boot和Nacos多环境配置",slug:"eurynome-cloud-中的spring-boot和nacos多环境配置",children:[]}]}],path:"/documents/%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE.html",pathLocale:"/",extraFields:[]},{title:"快速了解",headers:[{level:2,title:"项目简介",slug:"项目简介",children:[]},{level:2,title:"主要特性",slug:"主要特性",children:[]},{level:2,title:"技术选型",slug:"技术选型",children:[]},{level:2,title:"内置功能",slug:"内置功能",children:[]}],path:"/documents/%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3.html",pathLocale:"/",extraFields:[]},{title:"数据初始化",headers:[{level:2,title:"系统初次部署数据库初始化内容",slug:"系统初次部署数据库初始化内容",children:[]},{level:2,title:"数据表及数据初始化说明",slug:"数据表及数据初始化说明",children:[{level:3,title:"[1]、OAuth2 标准表结构的创建",slug:"_1-、oauth2-标准表结构的创建",children:[]},{level:3,title:"[2]、服务中涉及业务表的创建",slug:"_2-、服务中涉及业务表的创建",children:[]},{level:3,title:"[3]、个别View或函数的创建",slug:"_3-、个别view或函数的创建",children:[]},{level:3,title:"[4]、默认用户、角色等数据的初始化",slug:"_4-、默认用户、角色等数据的初始化",children:[]},{level:3,title:"[5]、服务Rest API接口数据初始化",slug:"_5-、服务rest-api接口数据初始化",children:[]}]},{level:2,title:"数据表和数据自动初始化",slug:"数据表和数据自动初始化",children:[{level:3,title:"解决办法",slug:"解决办法",children:[]},{level:3,title:"具体步骤",slug:"具体步骤",children:[]}]},{level:2,title:"系统默认账号",slug:"系统默认账号",children:[]}],path:"/documents/%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96.html",pathLocale:"/",extraFields:[]},{title:"新建子模块",headers:[{level:2,title:"在现有工程内,新建常规模块",slug:"在现有工程内-新建常规模块",children:[{level:3,title:"手工新建子模块(非微服务模块)",slug:"手工新建子模块-非微服务模块",children:[]},{level:3,title:"IDEA新建子模块(非微服务模块)",slug:"idea新建子模块-非微服务模块",children:[]}]},{level:2,title:"在现有工程内,新建微服务模块",slug:"在现有工程内-新建微服务模块",children:[{level:3,title:"手工新建子模块(非常规模块)",slug:"手工新建子模块-非常规模块",children:[]},{level:3,title:"IDEA新建子模块(非常规模块)",slug:"idea新建子模块-非常规模块",children:[]}]},{level:2,title:"在现有工程外,新建微服务独立模块工程",slug:"在现有工程外-新建微服务独立模块工程",children:[]}],path:"/documents/%E6%96%B0%E5%BB%BA%E5%AD%90%E6%A8%A1%E5%9D%97.html",pathLocale:"/",extraFields:[]},{title:"更换数据库",headers:[{level:2,title:"为什么默认使用PostgreSQL数据库?",slug:"为什么默认使用postgresql数据库",children:[{level:3,title:"PostgreSQL VS MySQL",slug:"postgresql-vs-mysql",children:[]},{level:3,title:"PostgreSQL相对于MySQL的优势",slug:"postgresql相对于mysql的优势",children:[]},{level:3,title:"MySQL相对于PostgreSQL的优势",slug:"mysql相对于postgresql的优势",children:[]},{level:3,title:"总结",slug:"总结",children:[]}]},{level:2,title:"spring-boot-starter-data-jpa 更换数据库方式",slug:"spring-boot-starter-data-jpa-更换数据库方式",children:[]},{level:2,title:"Eurynome Cloud 更换数据库方式",slug:"eurynome-cloud-更换数据库方式",children:[{level:3,title:"步骤一:判断是否需要添加数据库方言配置",slug:"步骤一-判断是否需要添加数据库方言配置",children:[]},{level:3,title:"步骤二:修改环境参数",slug:"步骤二-修改环境参数",children:[]},{level:3,title:"步骤三:修改pom.xml",slug:"步骤三-修改pom-xml",children:[]},{level:3,title:"步骤四:添加数据库JDBC Driver",slug:"步骤四-添加数据库jdbc-driver",children:[]},{level:3,title:"步骤五:编译工程代码",slug:"步骤五-编译工程代码",children:[]}]}],path:"/documents/%E6%9B%B4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93.html",pathLocale:"/",extraFields:[]},{title:"环境部署",headers:[{level:2,title:"准备工作",slug:"准备工作",children:[{level:3,title:"后端运行所需的基础设施",slug:"后端运行所需的基础设施",children:[]},{level:3,title:"前端运行所需的基础设施",slug:"前端运行所需的基础设施",children:[]}]},{level:2,title:"运行系统",slug:"运行系统",children:[{level:3,title:"后端运行",slug:"后端运行",children:[]},{level:3,title:"前端运行",slug:"前端运行",children:[]}]}],path:"/documents/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.html",pathLocale:"/",extraFields:[]},{title:"项目介绍",headers:[{level:2,title:"工程结构",slug:"工程结构",children:[{level:3,title:"后端工程结构",slug:"后端工程结构",children:[]}]},{level:2,title:"核心技术",slug:"核心技术",children:[{level:3,title:"后端核心技术",slug:"后端核心技术",children:[]},{level:3,title:"前端核心技术",slug:"前端核心技术",children:[]}]},{level:2,title:"版本关系",slug:"版本关系",children:[{level:3,title:"组件版本关系",slug:"组件版本关系",children:[]},{level:3,title:"毕业版本关系(推荐使用)",slug:"毕业版本关系-推荐使用",children:[]}]},{level:2,title:"功能介绍",slug:"功能介绍",children:[{level:3,title:"[1]、统一安全认证中心",slug:"_1-、统一安全认证中心",children:[]},{level:3,title:"[2]、统一服务访问网关",slug:"_2-、统一服务访问网关",children:[]},{level:3,title:"[3]、微服务架构支撑",slug:"_3-、微服务架构支撑",children:[]},{level:3,title:"[4]、微服务运行监控",slug:"_4-、微服务运行监控",children:[]},{level:3,title:"[5]、数据自动化处理",slug:"_5-、数据自动化处理",children:[]},{level:3,title:"[6]、服务开发支撑",slug:"_6-、服务开发支撑",children:[]},{level:3,title:"[7]、信息发送集成",slug:"_7-、信息发送集成",children:[]},{level:3,title:"[8]、内容审核集成",slug:"_8-、内容审核集成",children:[]}]}],path:"/documents/%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.html",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[{level:2,title:"Athena 是什么?",slug:"athena-是什么",children:[]},{level:2,title:"Athena 不是什么?",slug:"athena-不是什么",children:[]},{level:2,title:"为什么 Athena 和 Eurynome Cloud 共享代码?",slug:"为什么-athena-和-eurynome-cloud-共享代码",children:[]},{level:2,title:"为什么构建 Athena?",slug:"为什么构建-athena",children:[]}],path:"/documents-athena/",pathLocale:"/",extraFields:[]},{title:"介绍",headers:[],path:"/microservices/",pathLocale:"/",extraFields:[]},{title:"容器化技术",headers:[{level:2,title:"Docker能解决什么问题?",slug:"docker能解决什么问题",children:[{level:3,title:"麻烦的环境配置",slug:"麻烦的环境配置",children:[]},{level:3,title:"现在的应用程序",slug:"现在的应用程序",children:[]},{level:3,title:"新架构的挑战",slug:"新架构的挑战",children:[]},{level:3,title:"统一的管理",slug:"统一的管理",children:[]}]},{level:2,title:"“容器”",slug:"容器",children:[{level:3,title:"虚拟化技术",slug:"虚拟化技术",children:[]},{level:3,title:"容器技术",slug:"容器技术",children:[]}]},{level:2,title:"Docker",slug:"docker",children:[{level:3,title:"Docker架构",slug:"docker架构",children:[]},{level:3,title:"Docker底层实现",slug:"docker底层实现",children:[]},{level:3,title:"Docker核心技术",slug:"docker核心技术",children:[]},{level:3,title:"Docker VS VM",slug:"docker-vs-vm",children:[]}]}],path:"/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF.html",pathLocale:"/",extraFields:[]},{title:"容器化部署",headers:[{level:2,title:"本地容器部署",slug:"本地容器部署",children:[{level:3,title:"[1]、本地Docker安装(Windows版)",slug:"_1-、本地docker安装-windows版",children:[]},{level:3,title:"[2]、安装配置MySQL",slug:"_2-、安装配置mysql",children:[]},{level:3,title:"[2]、安装配置PostgreSQL",slug:"_2-、安装配置postgresql",children:[]},{level:3,title:"[3]、安装配置Redis",slug:"_3-、安装配置redis",children:[]},{level:3,title:"[4]、部署Kafka、Zookeeper、Nacos、ELK、Sentinel Dashboard",slug:"_4-、部署kafka、zookeeper、nacos、elk、sentinel-dashboard",children:[]},{level:3,title:"[5]、部署Skywalking",slug:"_5-、部署skywalking",children:[]},{level:3,title:"[6]、服务打包部署",slug:"_6-、服务打包部署",children:[]}]},{level:2,title:"服务器容器部署",slug:"服务器容器部署",children:[]},{level:2,title:"Docker打包设计",slug:"docker打包设计",children:[{level:3,title:"Eurynome Cloud Docker 打包设计初衷",slug:"eurynome-cloud-docker-打包设计初衷",children:[]},{level:3,title:"Eurynome Cloud Docker 打包的设计",slug:"eurynome-cloud-docker-打包的设计",children:[]},{level:3,title:"Eurynome Cloud Docker 打包使用方法",slug:"eurynome-cloud-docker-打包使用方法",children:[]}]}],path:"/microservices/%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2.html",pathLocale:"/",extraFields:[]},{title:"常见问题",headers:[{level:2,title:"Redis",slug:"redis",children:[{level:3,title:"[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问",slug:"_1-、本地redis使用127-0-0-1可以访问-使用ip地址无法访问",children:[]},{level:3,title:"[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required",slug:"_2-、io-lettuce-core-rediscommandexecutionexception-noauth-authentication-required",children:[]},{level:3,title:"[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>",slug:"_3-、noauth-hello-must-be-called-with-the-client-already-authenticated-otherwise-the-hello-auth-user",children:[]}]},{level:2,title:"Nacos",slug:"nacos",children:[{level:3,title:"[1]、failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00",slug:"_1-、failover-switch-is-not-found-failover00-00-000-vipsrv-failover-switch-000-00-00",children:[]}]}],path:"/others/",pathLocale:"/",extraFields:[]},{title:"更新日志",headers:[{level:2,title:"v2.5.4.120",slug:"v2-5-4-120",children:[]},{level:2,title:"v2.5.4.110",slug:"v2-5-4-110",children:[]},{level:2,title:"v2.5.4.100",slug:"v2-5-4-100",children:[]},{level:2,title:"v2.5.4.90",slug:"v2-5-4-90",children:[]},{level:2,title:"v2.5.4.80",slug:"v2-5-4-80",children:[]},{level:2,title:"v2.5.4.65",slug:"v2-5-4-65",children:[]},{level:2,title:"v2.5.4.60",slug:"v2-5-4-60",children:[]},{level:2,title:"v2.5.4.55",slug:"v2-5-4-55",children:[]},{level:2,title:"v2.5.4.50",slug:"v2-5-4-50",children:[]},{level:2,title:"v2.5.4.40",slug:"v2-5-4-40",children:[]},{level:2,title:"v2.5.4.30",slug:"v2-5-4-30",children:[]},{level:2,title:"v2.5.4.20",slug:"v2-5-4-20",children:[]},{level:2,title:"v2.5.4.10",slug:"v2-5-4-10",children:[]},{level:2,title:"v2.5.3.60",slug:"v2-5-3-60",children:[]},{level:2,title:"v2.5.3.50",slug:"v2-5-3-50",children:[]},{level:2,title:"v2.5.3.40",slug:"v2-5-3-40",children:[]},{level:2,title:"v2.5.3.30",slug:"v2-5-3-30",children:[]},{level:2,title:"v2.5.3.10",slug:"v2-5-3-10",children:[]},{level:2,title:"2.5.2.40",slug:"_2-5-2-40",children:[]},{level:2,title:"v2.5.2.30",slug:"v2-5-2-30",children:[]},{level:2,title:"v2.5.2.25",slug:"v2-5-2-25",children:[]},{level:2,title:"v2.5.2.20",slug:"v2-5-2-20",children:[]},{level:2,title:"v2.5.1.0",slug:"v2-5-1-0",children:[]},{level:2,title:"v2.4.5.60",slug:"v2-4-5-60",children:[]},{level:2,title:"v2.4.5.48",slug:"v2-4-5-48",children:[]}],path:"/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html",pathLocale:"/",extraFields:[]},{title:"",headers:[],path:"/404.html",pathLocale:"/",extraFields:[]}]},5220:(e,l,t)=>{t.d(l,{H:()=>i});const i={base:"/eurynome-cloud/",lang:"zh-CN",title:"Eurynome Cloud",description:"Eurynome Cloud, 在线文档, 微服务, 微服务架构, Spring Boot,Spring Cloud,Spring Cloud Alibaba, Spring Security, OAuth 2, Skywalking, Nacos",head:[["link",{rel:"icon",href:"/eurynome-cloud/images/logo.png"}],["meta",{name:"keywords",content:"Eurynome Cloud,微服务,Spring Boot,Spirng Cloud,Spring Cloud Alibaba,Spring Security,OAuth2,Nacos,Skywalking"}]],locales:{}}},2232:(e,l,t)=>{t.d(l,{f:()=>i});const i={logo:"/images/logo.png",darkMode:!0,lastUpdatedText:"更新时间",contributorsText:"贡献者",navbar:[{text:"指南",link:"/documents/"},{text:"单体版",link:"/documents-athena/"},{text:"微服务技术栈",link:"/microservices/"},{text:"了解更多",children:[{text:"延伸",children:[{text:"了解基础知识",link:"/basic-knowledge/"}]},{text:"帮助",children:[{text:"我要提问",link:"https://gitee.com/herodotus/eurynome-cloud/issues"},{text:"常见问题",link:"/others/README.md"},{text:"更新日志",link:"/others/更新日志.md"},{text:"加入QQ群",link:"https://jq.qq.com/?_wv=1027&k=bIerJVy8"}]}]},{text:"Gitee",children:[{text:"后端源码",link:"https://gitee.com/herodotus/eurynome-cloud",target:"_blank"},{text:"前端源码",link:"https://gitee.com/herodotus/eurynome-cloud-ui",target:"_blank"},{text:"单体版源码",link:"https://gitee.com/herodotus/herodotus-cloud-athena",target:"_blank"}]},{text:"Github",children:[{text:"后端源码",link:"https://github.com/herodotus-cloud/eurynome-cloud",target:"_blank"},{text:"前端源码",link:"https://github.com/herodotus-cloud/eurynome-cloud-ui",target:"_blank"},{text:"单体版源码",link:"https://github.com/herodotus-cloud/herodotus-cloud-athena",target:"_blank"}]}],sidebar:{"/documents/":[{text:"指南",children:["/documents/README.md","/documents/快速了解.md","/documents/项目介绍.md","/documents/环境部署.md"]},{text:"后端手册",children:["/documents/数据初始化.md","/documents/更换数据库.md","/documents/多环境配置.md","/documents/新建子模块.md"]},{text:"前端手册",children:["/documents/前端手册.md"]}],"/documents-athena/":[{text:"单体版",children:["/documents-athena/README.md"]}],"/microservices/":[{text:"微服务技术栈",children:["/microservices/README.md","/microservices/容器化技术.md","/microservices/容器化部署.md"]}],"/basic-knowledge/":[{text:"基础知识",children:["/basic-knowledge/README.md","/basic-knowledge/spring-data-jpa.md"]}],"/others/":[{text:"其它内容",children:["/others/README.md","/others/更新日志.md"]}]},locales:{"/":{selectLanguageName:"English"}},repo:null,selectLanguageText:"Languages",selectLanguageAriaLabel:"Select language",sidebarDepth:2,editLink:!0,editLinkText:"Edit this page",lastUpdated:!0,contributors:!0,notFound:["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],backToHome:"Take me home",openInNewWindow:"open in new window",toggleDarkMode:"toggle dark mode",toggleSidebar:"toggle sidebar"}}},e=>{e.O(0,[512,567],(()=>(5698,e(e.s=5698)))),e.O()}]); \ No newline at end of file diff --git a/documents/guides/assets/js/runtime~app.70302f05.js b/documents/guides/assets/js/runtime~app.70302f05.js deleted file mode 100644 index f8b1a17a1..000000000 --- a/documents/guides/assets/js/runtime~app.70302f05.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,r,t,o={},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var t=a[e]={exports:{}};return o[e].call(t.exports,t,t.exports,n),t.exports}n.m=o,e=[],n.O=(r,t,o,a)=>{if(!t){var c=1/0;for(i=0;i=a)&&Object.keys(n.O).every((e=>n.O[e](t[f])))?t.splice(f--,1):(d=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>"assets/js/"+({4:"v-6430ce6c",88:"v-3706649a",129:"v-661abe0c",152:"v-23340e69",188:"v-5fe0d252",243:"v-cff5f184",247:"v-9a0d6c6c",365:"v-040481e0",446:"v-25b47c13",509:"v-8daa1a0e",658:"v-f283941e",701:"v-eef3d90a",781:"v-c0f957a0",861:"v-344b5769",925:"v-49381304",951:"v-5f81e486",961:"v-5b482e3b",967:"v-4cbee12b",979:"v-4331d874"}[e]||e)+"."+{4:"1de67da1",88:"7c7f390b",129:"31ad52d8",152:"59cb78b1",188:"2bcef0c2",243:"792b970a",247:"b218c0df",293:"81f1209b",365:"06a9e811",446:"5aec5b68",491:"972827fa",509:"5c646a5b",658:"9adcf084",701:"27e4d8d5",781:"93f13f72",861:"298808d9",925:"5f7bf04f",951:"8aef46c8",961:"99758c97",967:"c9497cfe",979:"9dd6945c"}[e]+".js",n.miniCssF=e=>"assets/css/styles.03bfbc71.css",n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="eurynome-cloud-document:",n.l=(e,o,a,c)=>{if(r[e])r[e].push(o);else{var d,f;if(void 0!==a)for(var s=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(v);var a=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),a&&a.forEach((e=>e(o))),t)return t(o)},v=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),f&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/eurynome-cloud/",(()=>{var e={523:0,512:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^5(12|23)$/.test(r))e[r]=0;else{var a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var c=n.p+n.u(r),d=new Error;n.l(c,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;d.message="Loading chunk "+r+" failed.\n("+a+": "+c+")",d.name="ChunkLoadError",d.type=a,d.request=c,o[1](d)}}),"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,t)=>{var o,a,[c,d,f]=t,s=0;if(c.some((r=>0!==e[r]))){for(o in d)n.o(d,o)&&(n.m[o]=d[o]);if(f)var i=f(n)}for(r&&r(t);s{"use strict";var e,r,t,o={},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var t=a[e]={exports:{}};return o[e].call(t.exports,t,t.exports,n),t.exports}n.m=o,e=[],n.O=(r,t,o,a)=>{if(!t){var d=1/0;for(i=0;i=a)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(c=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>"assets/js/"+({4:"v-6430ce6c",88:"v-3706649a",129:"v-661abe0c",152:"v-23340e69",188:"v-5fe0d252",243:"v-cff5f184",247:"v-9a0d6c6c",365:"v-040481e0",446:"v-25b47c13",509:"v-8daa1a0e",658:"v-f283941e",701:"v-eef3d90a",781:"v-c0f957a0",861:"v-344b5769",925:"v-49381304",951:"v-5f81e486",961:"v-5b482e3b",967:"v-4cbee12b",979:"v-4331d874"}[e]||e)+"."+{4:"1de67da1",88:"7c7f390b",129:"31ad52d8",152:"59cb78b1",188:"2bcef0c2",243:"792b970a",247:"b218c0df",293:"81f1209b",365:"06a9e811",446:"4f67a7d2",491:"972827fa",509:"5c646a5b",658:"9adcf084",701:"27e4d8d5",781:"38e49d70",861:"298808d9",925:"5f7bf04f",951:"8aef46c8",961:"0363b26d",967:"c9497cfe",979:"9dd6945c"}[e]+".js",n.miniCssF=e=>"assets/css/styles.03bfbc71.css",n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="eurynome-cloud-document:",n.l=(e,o,a,d)=>{if(r[e])r[e].push(o);else{var c,s;if(void 0!==a)for(var f=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(v);var a=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(o))),t)return t(o)},v=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),s&&document.head.appendChild(c)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/eurynome-cloud/",(()=>{var e={523:0,512:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^5(12|23)$/.test(r))e[r]=0;else{var a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var d=n.p+n.u(r),c=new Error;n.l(d,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+r+" failed.\n("+a+": "+d+")",c.name="ChunkLoadError",c.type=a,c.request=d,o[1](c)}}),"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,t)=>{var o,a,[d,c,s]=t,f=0;if(d.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);if(s)var i=s(n)}for(r&&r(t);f{o.r(i),o.d(i,{data:()=>t});const t={key:"v-25b47c13",path:"/others/",title:"常见问题",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"Redis",slug:"redis",children:[{level:3,title:"[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问",slug:"_1-、本地redis使用127-0-0-1可以访问-使用ip地址无法访问",children:[]},{level:3,title:"[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required",slug:"_2-、io-lettuce-core-rediscommandexecutionexception-noauth-authentication-required",children:[]},{level:3,title:"[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>",slug:"_3-、noauth-hello-must-be-called-with-the-client-already-authenticated-otherwise-the-hello-auth-user",children:[]}]},{level:2,title:"Nacos",slug:"nacos",children:[{level:3,title:"[1]、failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00",slug:"_1-、failover-switch-is-not-found-failover00-00-000-vipsrv-failover-switch-000-00-00",children:[]}]}],filePathRelative:"others/README.md",git:{updatedTime:1630997095e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:3}]}}},5564:(e,i,o)=>{o.r(i),o.d(i,{default:()=>n});var t=o(6252);const d=(0,t.uE)('

常见问题

Redis

[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问

  • Windows

找到redis.windows.conf配置文件

1、将protected-mode 参数改为no。

2、注释掉bind 127.0.0.1

3、重启redis服务

Redis 密码

  • Linux

1、linux对应的是redis.conf文件

2、 修改还是和windows一样

3、 修改完成重启服务

[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required

出现该错误,是由于Redis中设置密码,而代码中未读到Redis密码或配置文件中没有配置密码导致的。

  • 解决办法
  1. 首先用Redis客户端,比如:redis-desktop-manager,进行Redis的连接测试。如果无法连接,那么请检查密码输入是否正确、本地网络等相关环境;如果可以正常连接,请进行下一步。
  2. 检查Nacos中,Redis相关配置是否配置了密码。一定要注意格式,检查格式缩进是否正确、yaml配置“:”后面是否空了一格。如果确定配置正确,请进行下一步。
  3. 检查服务是否可以正常访问到Nacos服务器,是否可以正确读取Nacos中配置。
',17),a=(0,t.Uk)("以上操作均确保无误应该就可以正常使用了,如果还有问题,那么就请尽可能的准备详尽的信息,在Gitee中提"),l={href:"https://gitee.com/herodotus/eurynome-cloud/issues",target:"_blank",rel:"noopener noreferrer"},r=(0,t.Uk)("Issue"),c=(0,t.uE)('

[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>

使用spring boot data redis 链接redis sentinel集群,会报此错。

原因是因为redis sentinel集群的sentinel配置文件没有配置密码,sentinel配置密码的方式和redis的密码配置方式一样,配置文件中加上requirepass <密码> 就行。

另外,sentinel中的sentinel auth-pass <master> <pass> 不是给sentinel配置密码,而是sentinel链接redis master的密码

Nacos

[1]、failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00

将Nacos日志设置到Debug级别,在服务运行起来之后,就会发现控制台持续输出以上Debug信息。

这不是代码Bug,而是Nacos自身机制

这是Nacos Client本地缓存及故障转移机制。

在Nacos源代码中,ServiceInfoHolder的构造方法中,会初始化一个FailoverReactor类。FailoverReactor的作用便是用来处理故障转移的。

FailoverReactor的构造方法会拼接故障根目录:${user.home}/nacos/naming/public/failover,其中public也有可能是其他的自定义命名空间;

主要逻辑就是:

  • 基本操作就是读取failover目录,查找故障转移【开关】文件为名为“failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00”。
  • 如果故障转移文件不存在,则直接返回,不断输出Debug信息。
  • 如果故障转移文件存在,比较文件修改时间,如果已经修改,则获取故障转移文件中的内容。
  • 故障转移文件中存储了0和1标识。0表示关闭,1表示开启。
  • 当为开启状态时,执行线程FailoverFileReader。

解决办法

  1. 将Nacos日志级别调整为INFO级别以上。
  2. 手动在${user.home}/nacos/naming/public目录下,新建文件failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00
',15),n={render:function(e,i){const o=(0,t.up)("OutboundLink");return(0,t.wg)(),(0,t.iD)(t.HY,null,[d,(0,t._)("p",null,[a,(0,t._)("a",l,[r,(0,t.Wm)(o)])]),c],64)}}}}]); \ No newline at end of file diff --git a/documents/guides/assets/js/v-25b47c13.5aec5b68.js b/documents/guides/assets/js/v-25b47c13.5aec5b68.js deleted file mode 100644 index 02118d0e0..000000000 --- a/documents/guides/assets/js/v-25b47c13.5aec5b68.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[446],{3166:(e,t,i)=>{i.r(t),i.d(t,{data:()=>d});const d={key:"v-25b47c13",path:"/others/",title:"常见问题",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"Redis",slug:"redis",children:[{level:3,title:"[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问",slug:"_1-、本地redis使用127-0-0-1可以访问-使用ip地址无法访问",children:[]},{level:3,title:"[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required",slug:"_2-、io-lettuce-core-rediscommandexecutionexception-noauth-authentication-required",children:[]},{level:3,title:"[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>",slug:"_3-、noauth-hello-must-be-called-with-the-client-already-authenticated-otherwise-the-hello-auth-user",children:[]}]}],filePathRelative:"others/README.md",git:{updatedTime:1630997095e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:3}]}}},5658:(e,t,i)=>{i.r(t),i.d(t,{default:()=>l});var d=i(6252);const o=(0,d.uE)('

常见问题

Redis

[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问

  • Windows

找到redis.windows.conf配置文件

1、将protected-mode 参数改为no。

2、注释掉bind 127.0.0.1

3、重启redis服务

Redis 密码

  • Linux

1、linux对应的是redis.conf文件

2、 修改还是和windows一样

3、 修改完成重启服务

[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required

出现该错误,是由于Redis中设置密码,而代码中未读到Redis密码或配置文件中没有配置密码导致的。

  • 解决办法
  1. 首先用Redis客户端,比如:redis-desktop-manager,进行Redis的连接测试。如果无法连接,那么请检查密码输入是否正确、本地网络等相关环境;如果可以正常连接,请进行下一步。
  2. 检查Nacos中,Redis相关配置是否配置了密码。一定要注意格式,检查格式缩进是否正确、yaml配置“:”后面是否空了一格。如果确定配置正确,请进行下一步。
  3. 检查服务是否可以正常访问到Nacos服务器,是否可以正确读取Nacos中配置。
',17),c=(0,d.Uk)("以上操作均确保无误应该就可以正常使用了,如果还有问题,那么就请尽可能的准备详尽的信息,在Gitee中提"),n={href:"https://gitee.com/herodotus/eurynome-cloud/issues",target:"_blank",rel:"noopener noreferrer"},r=(0,d.Uk)("Issue"),a=(0,d.uE)('

[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>

使用spring boot data redis 链接redis sentinel集群,会报此错。

原因是因为redis sentinel集群的sentinel配置文件没有配置密码,sentinel配置密码的方式和redis的密码配置方式一样,配置文件中加上requirepass <密码> 就行。

另外,sentinel中的sentinel auth-pass <master> <pass> 不是给sentinel配置密码,而是sentinel链接redis master的密码

',4),l={render:function(e,t){const i=(0,d.up)("OutboundLink");return(0,d.wg)(),(0,d.iD)(d.HY,null,[o,(0,d._)("p",null,[c,(0,d._)("a",n,[r,(0,d.Wm)(i)])]),a],64)}}}}]); \ No newline at end of file diff --git a/documents/guides/assets/js/v-5b482e3b.0363b26d.js b/documents/guides/assets/js/v-5b482e3b.0363b26d.js new file mode 100644 index 000000000..a280e3d3a --- /dev/null +++ b/documents/guides/assets/js/v-5b482e3b.0363b26d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[961],{7149:(i,l,e)=>{e.r(l),e.d(l,{data:()=>a});const a={key:"v-5b482e3b",path:"/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html",title:"更新日志",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"v2.5.4.120",slug:"v2-5-4-120",children:[]},{level:2,title:"v2.5.4.110",slug:"v2-5-4-110",children:[]},{level:2,title:"v2.5.4.100",slug:"v2-5-4-100",children:[]},{level:2,title:"v2.5.4.90",slug:"v2-5-4-90",children:[]},{level:2,title:"v2.5.4.80",slug:"v2-5-4-80",children:[]},{level:2,title:"v2.5.4.65",slug:"v2-5-4-65",children:[]},{level:2,title:"v2.5.4.60",slug:"v2-5-4-60",children:[]},{level:2,title:"v2.5.4.55",slug:"v2-5-4-55",children:[]},{level:2,title:"v2.5.4.50",slug:"v2-5-4-50",children:[]},{level:2,title:"v2.5.4.40",slug:"v2-5-4-40",children:[]},{level:2,title:"v2.5.4.30",slug:"v2-5-4-30",children:[]},{level:2,title:"v2.5.4.20",slug:"v2-5-4-20",children:[]},{level:2,title:"v2.5.4.10",slug:"v2-5-4-10",children:[]},{level:2,title:"v2.5.3.60",slug:"v2-5-3-60",children:[]},{level:2,title:"v2.5.3.50",slug:"v2-5-3-50",children:[]},{level:2,title:"v2.5.3.40",slug:"v2-5-3-40",children:[]},{level:2,title:"v2.5.3.30",slug:"v2-5-3-30",children:[]},{level:2,title:"v2.5.3.10",slug:"v2-5-3-10",children:[]},{level:2,title:"2.5.2.40",slug:"_2-5-2-40",children:[]},{level:2,title:"v2.5.2.30",slug:"v2-5-2-30",children:[]},{level:2,title:"v2.5.2.25",slug:"v2-5-2-25",children:[]},{level:2,title:"v2.5.2.20",slug:"v2-5-2-20",children:[]},{level:2,title:"v2.5.1.0",slug:"v2-5-1-0",children:[]},{level:2,title:"v2.4.5.60",slug:"v2-4-5-60",children:[]},{level:2,title:"v2.4.5.48",slug:"v2-4-5-48",children:[]}],filePathRelative:"others/更新日志.md",git:{updatedTime:1631030613e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:1}]}}},1631:(i,l,e)=>{e.r(l),e.d(l,{default:()=>t});const a=(0,e(6252).uE)('

更新日志

v2.5.4.120

  1. 使用Springdoc全面替换Springfox,配置更灵活、配置更多样
  2. Swagger文档注解全面升级为支持OpenAPI
  3. 使用Springdoc重构文档聚合功能,支持聚合查阅和服务独立查阅。Knife4j同步升级至3.0.3版本。
  4. Swagger文档默认支持OAuth2 Password、Authorization Code 两种认证流程
  5. 整合Camunda Engine Rest 与Swagger,实现Camunda API接口文档查阅,支持聚合查阅。
  6. 修复Bpmn服务默认启动Tomcat问题。
  7. 升级前端依赖包版本
  8. 更新Nacos配置文件及导入包
  9. 更新在线文档

v2.5.4.110

  1. 重新构建项目文档体系,使用纯静态页面,替代已有 Gitee Wiki 文档。优化文档结构,提升文档阅读体验。提供全文搜索,便于文档查阅。支持文档独立部署,方便使用者搭建独立的文档服务查阅。
  2. 更换Nacos导入包,解决上一版本导入包导入重复问题
  3. Update Readme

v2.5.4.100

  1. 重新梳理所有Nacos配置,提取共性配置至统一配置文件,优化配置属性结构和归类,便于参数修改,降低维护复杂度
  2. 重构数据库相关Nacos配置,优化Maven、Nacos多环境配置与数据库切换的联动性,让数据库切换所需修改的参数更少,切换更顺滑
  3. 解决eurynome-cloud-management编译出现的Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on 4. project XXXX: Input length = 1 -> [Help 1]错误
  4. 解决Redis设置密码后,无法连接出现 NOAUTH Authentication required 错误
  5. 增加MySQL数据库默认数据初始化脚本
  6. 增加最新版Nacos配置导入包
  7. 修复前端UI申请APPKEY页面错误
  8. 修复前端UI切换至单体版后,连接错误问题。
  9. 升级前端UI依赖包版本。
  10. 同步更新相关文档,补充新建子模块、常见问题等部分文档。

v2.5.4.90

  1. 使用Mybatis Plus全面替换已有Mybatis,与Spring Boot Data JPA共存且支持同时使用。使用任何技术都可以无障碍的进行业务代码编写。
  2. 整合Mybatis Plus和Spring Boot Data JPA更换数据库配置属性,一处修改即可以同时修改Mybatis Plus和Spring Boot Data JPA使用数据库类型。
  3. 新增接口XSS脚本攻击过滤机制,同时支持请求参数和JSON请求体过滤。采用Ebay XSS过滤模型,进一步提升防控能力。
  4. 新增SQL 注入攻击防控机制。
  5. 解决eurynome-cloud-gateway和eurynome-cloud-management服务启动调用Kafka问题。
  6. 解决CacheConfigException错误问题,在错误体系中增加配置参数不合理提醒,让信息反馈更加友好。
  7. 解决Spring Boot Admin 不支持Java 8 时间类型问题。
  8. 解决Spring Boot Admin 不显示 Git Properties 信息问题。
  9. 解决修改Redis密码配置生效问题
  10. 梳理dependencies依赖包,对已有依赖进行进行更合理的分类,更加便于依赖包的找寻和维护。
  11. 升级依赖包版本
    • spring-boot-admin 升级至 2.5.1
    • git-commit-id-plugin 升级至 4.9.10
    • docker-maven-plugin 升级至 0.37.0
    • hutool 升级至 5.7.10
    • okhttps 升级至 3.1.4
    • JustAuth 升级至1.16.3
    • aliyun-java-sdk-core 升级至 4.5.25
    • baiducloud-java-sdk 升级至 0.10.175
    • aliyun-java-sdk-oss 升级至 3.13.1
    • cn.jpush.api 升级至 3.5.2
  12. 规范项目文档,增加系统部署、数据库切换等多部分内容
  13. 增加Nacos配置导入包,在没有自动部署功能支持的情况下,也可以更加方便的导入配置。
  14. 替换 UI SweetAlert 过期方法,解决弹出框不会关闭问题
  15. 解决授权码模式(authorization code)验证码被拦截问题

v2.5.4.80

  • 合并eurynome-cloud-curd包和eurynome-cloud-rest包,减少包数量,提升代码维护便捷度。
  • 增加接口幂等处理机制,防止重复提交。增加接口防刷限制机制,防止接口恶意频繁刷新。
  • 接口幂等和防刷机制,均支持全局配置控制,同时提供@Idempotent和@AccessLimited注解进行灵活的、个性化的配置。
  • 接口幂等和防刷机制,缓存标记采用分布式多级缓存进行存储,将低单一访问Redis带来的访问压力,同时支持多实例数据多级缓存本地数据同步。
  • 接口幂等和防刷机制,所涉及标记缓存时间配置全部统一支持Duration时间格式,简化配置参数,提升配置便捷度。同时,优化平台错误响应体系,返回更加友好的错误信息提示。
  • 定义Stamp签章体系,采用统一体系,对SMS短信验证码、JustAuth State、环信Token以及接口幂等和防刷等需临时存储标记相关应用进行统一实现。同时,采用分布式多级缓存进行数据存储,降低单一访问Redis压力。

v2.5.4.65

  • 优化Skywalking打包内容,直接使用Skywalking官方容器
  • 补充RequestMappingScanner对应事件代码,解决单体版扫描Rest API接口后不会存储问题
  • 优化数据库脚本以及数据库表结构和默认数据自动初始化机制。解决在第一次运行时,Spring Data JPA JDBC初始化机制与Hibernate 初始化机制冲突问题。
  • 在Gitee Wiki中,增加数据库初始化说明文档
  • 删除部分预留代码,减少暂时不必要的代码对使用者带来的误导。
  • 前端UI中,增加部分配置,使用者可以通过注释部分配置,让前端UI快速支持单体版。

v2.5.4.60

  • Spring Boot 版本升级至 2.5.4
  • Skywalking 版本升级至 8.7.0
  • 微服务日志输出至日志中心格式。
  • 增加Swagger注入条件注解,优化日志中心相关配置采用统一常量控制
  • 增加自定义Property"助手"数据统一自动编译生成配置,无须额外设置,在IDE中编辑配置属性时可自动弹出提示
  • 修复Kafka配置不生效问题。
  • 解决单体版自动启动Kafka问题。
  • 暂时关闭单体版Swagger,规避Swagger会自动启动Kafka问题。

v2.5.4.55

  • 整合代码,将constant包代码整合至common包中。删除constant包。
  • 完善Rest接口校验机制,以及相关自定义错误码
  • 统一spring boot validation错误信息,将其整合至平台统一响应实体Result中。无须在各个Rest接口中,添加BindingResult参数。

v2.5.4.50

  • 优化服务本地权限存储逻辑,解决权限属性数据重复存储,不会替换问题。
  • 重新梳理Spring Security OAuth2 方法级表达式动态权限鉴权逻辑,摒弃无用的权限验证Voter逻辑,使用统一逻辑实现@PreAuthorize注解权限的全面动态可配置化。统一平台接口- 白名单,IP地址白名单,以及Scope绑定URL的管理。
  • 重构UserDetails用户信息组织逻辑,使用Spring Security标准代码,替换自定义逻辑代码,降低代码冗余,与自研方法级动态权限完美融合。
  • 优化平台权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及分布式各服- 务多实例等各种应用场景。
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 清理系统无用代码。
  • 增加方法级动态权限演示动图,更新Readme

v2.5.4.40

  • 优化自定义多级缓存,实现可以统一设置allowNullValues值,并解决存储空值时卡死问题。
  • 重新梳理、优化系统权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及- - 分布式各服务多实例等各种应用场景。
  • 增加Kafka条件注入配置,将条件转换为@ConditionalOnXXX,方便管理和维护。避免单体版应用相关依赖过度依赖Kafka而导致的无法启动
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 去除传统Kafka Producer 通用类,改为统一使用 Spring Cloud Bus

v2.5.4.30

  • 重新调整Property配置,规范Property定义。修改相关配置
  • 调整包,以及包相关依赖关系。让包之间的依赖更加合理
  • 增加Kafka配置,增加@KafkaListener动态控制,以避免在不需要的情况下Kafka的自动开启。
  • 调整部分常理代码位置,常量代码基本调整完成
  • 将原有自定义条件,转换为@ConditionalOnXXX注解,让使用更加便捷
  • 日志中心是否开启状态,改为@ConditionalOnLogCenterEnabled注解

v2.5.4.20

  • 本地权限缓存更换为JetCache,为服务多实例的权限扫描和存储提供更好的支持
  • 将数据访问策略从Conditional类,升级为Conditional注解,使用更加便捷
  • 调整包依赖关系,新建assistant、constant包,删除message包。
  • 逐步将平台中各类非独有常量移入constant包方便管理和修改
  • 采用Spring Boot Event和Spring Cloud Bus Event 机制重构接口收集逻辑。支持单体架构、UPMS、分布式多实例等不同场景接口扫描的特殊需求
  • 优化Docker Compose配置,使用Debezium Kafka 替换已有kafka,以支持Debezium应用
  • 删除无用代码

v2.5.4.10

  • 全网首个实现Spring Security 动态URL权限与注解表达式权限有机整合,并且可以动态配置的微服务框架。
  • 全面支持方法级权限控制,Security OAuth2 permitAll等方法权限以及@PreAuthorize注解权限,均支持动态配置。目前支持以下权限的动态配置: · hasRole · hasAnyRole · hasAuthority · hasAnyAuthority · hasIpAddress · #oauth2.clientHasRole · #oauth2.clientHasAnyRole · #oauth2.hasScope · #oauth2.hasAnyScope · #oauth2.hasScopeMatching · #oauth2.hasAnyScopeMatching · #oauth2.denyOAuthClient · #oauth2.isOAuth · #oauth2.isUser · #oauth2.isClient
  • 彻底解决使用withObjectPostProcessor方式,会覆盖外部匹配规则问题。
  • 真正实现Scope权限与URL权限的关联与管控,拓展OAuth2默认只进行Scope简单对比的实现逻辑。
  • 实现动态权限配置的多服务同步。
  • 暂时去除JetCache,全面使用自研支持Hibernate二级缓存的多级缓存。
  • 修改配置文件配置
  • 删除无用代码

v2.5.3.60

  • Nacos版本升级至2.0.3
  • Hutool版本升级至5.7.6
  • 修改部分代码名称
  • 修改配置文件配置参数

v2.5.3.50

  • 将所有服务包括UAA的权限存储,改为本地和认证中心,多级分布式存储和验证。
  • 增加策略模式,支持认证中心权限数据直连和远程消息两种存储方式动态切换。
  • 改进自研多级缓存,解决Hibernate二级缓存进行数据缓存时产生的事务锁问题。
  • 删除无用代码
  • 为动态Scope权限做铺垫。
  • 全面支持方法级权限控制。

v2.5.3.40

  • Spring Boot 版本升级至 2.5.3
  • 采用新的Hash算法,缩短权限标识;简化用户权限信息,以缩短平台生成JWT Token的长度
  • git commit 插件由pl.project13.maven » git-commit-id-plugin改为io.github.git-commit-id » git-commit-id-maven-plugin。
  • git commit 插件升级至 5.0.0 版本

v2.5.3.30

  • 重构用户中心用户人员体系,将平台用户、第三方社交登录用户、人事管理用户以及Camunda工作流用户体系无缝融合。
  • 人事管理体系人员唯一化管理,同时支持企业、党组、团青等多种类型的机构类型,便于企业人事管理。
  • 基于Debezium实现数据库变更数据捕获,实现人事管理信息与Camunda工作流用户实时同步。
  • 树形结构通用代码实现逻辑与Hutool Tree一致,因此采用Hutool Tree 全面替换已有的Tree代码。
  • 删除不再使用的通用类代码。
  • 修改说明文档

v2.5.3.10

  • 自研基于Caffeine和Redis分布式两级缓存
  • 完美支持JPA Hibernate二级缓存
  • 完美支持各类查询数据缓存以及JPA @ManyToMany, @ManyToOne等关联查询。
  • 实现基于Caffeine的Hibernate二级缓存,可与自研两级缓存快速切换,仅使用本地缓存。
  • 极大的简化了原有自研的基于JetCache的缓存使用方式。
  • 保留JetCache,可根据实际使用需要使用。
  • 已有服务接口相关代码,均已更新自研分布式两级缓存模式。

2.5.2.40

  • Redis Value 默认序列化工具修改为Jackson2JsonRedisSerializer
  • jetcache valueEncoder 和 valueDecoder 修改为kryo
  • 部分代码的日志改为传统方式,不再使用@Slf4j注解
  • 抽象实体共性属性,拓展基础实体,以支持JPA视图类的ORM映射。
  • 重构基础Service,将基础Service的读操作与其它操作分离,以支持“视图”相关Service的编写。
  • 重构基础Controller,将基础Controller的读操作与其它操作分离,以支持“视图”相关Controller的编写。
  • 将Hibernate Validator替换为spring-boot-starter-validation
  • 删除JPA过期方法封装

v2.5.2.30

  • Spring Boot 版本升级至2.5.2
  • Spring Boot Admin 版本升级至2.4.2
  • 升级其它相关依赖版本

v2.5.2.25

  • Skywalking升级至8.6.0

v2.5.2.20

  • Spring Boot 升级至2.5.1
  • Camunda 升级至7.15.0
  • 其它依赖包版本升级
  • Swagger回滚至2.9.2,解决Swagger接口测试相关问题以及Knife4 Authorize不显示问题
  • 结构性调整平台相关配置属性

v2.5.1.0

  • Spring Boot 大版本升级至2.5.0

v2.4.5.60

  • 修改负载均衡不生效问题
  • 调整包依赖关系
  • 升级版本

v2.4.5.48

  • 正式发布开源版本
',51),t={render:function(i,l){return a}}}}]); \ No newline at end of file diff --git a/documents/guides/assets/js/v-5b482e3b.99758c97.js b/documents/guides/assets/js/v-5b482e3b.99758c97.js deleted file mode 100644 index d2d49781f..000000000 --- a/documents/guides/assets/js/v-5b482e3b.99758c97.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[961],{7149:(i,l,e)=>{e.r(l),e.d(l,{data:()=>a});const a={key:"v-5b482e3b",path:"/others/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.html",title:"更新日志",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"v2.5.4.110",slug:"v2-5-4-110",children:[]},{level:2,title:"v2.5.4.100",slug:"v2-5-4-100",children:[]},{level:2,title:"v2.5.4.90",slug:"v2-5-4-90",children:[]},{level:2,title:"v2.5.4.80",slug:"v2-5-4-80",children:[]},{level:2,title:"v2.5.4.65",slug:"v2-5-4-65",children:[]},{level:2,title:"v2.5.4.60",slug:"v2-5-4-60",children:[]},{level:2,title:"v2.5.4.55",slug:"v2-5-4-55",children:[]},{level:2,title:"v2.5.4.50",slug:"v2-5-4-50",children:[]},{level:2,title:"v2.5.4.40",slug:"v2-5-4-40",children:[]},{level:2,title:"v2.5.4.30",slug:"v2-5-4-30",children:[]},{level:2,title:"v2.5.4.20",slug:"v2-5-4-20",children:[]},{level:2,title:"v2.5.4.10",slug:"v2-5-4-10",children:[]},{level:2,title:"v2.5.3.60",slug:"v2-5-3-60",children:[]},{level:2,title:"v2.5.3.50",slug:"v2-5-3-50",children:[]},{level:2,title:"v2.5.3.40",slug:"v2-5-3-40",children:[]},{level:2,title:"v2.5.3.30",slug:"v2-5-3-30",children:[]},{level:2,title:"v2.5.3.10",slug:"v2-5-3-10",children:[]},{level:2,title:"2.5.2.40",slug:"_2-5-2-40",children:[]},{level:2,title:"v2.5.2.30",slug:"v2-5-2-30",children:[]},{level:2,title:"v2.5.2.25",slug:"v2-5-2-25",children:[]},{level:2,title:"v2.5.2.20",slug:"v2-5-2-20",children:[]},{level:2,title:"v2.5.1.0",slug:"v2-5-1-0",children:[]},{level:2,title:"v2.4.5.60",slug:"v2-4-5-60",children:[]},{level:2,title:"v2.4.5.48",slug:"v2-4-5-48",children:[]}],filePathRelative:"others/更新日志.md",git:{updatedTime:1631030613e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:1}]}}},7350:(i,l,e)=>{e.r(l),e.d(l,{default:()=>t});const a=(0,e(6252).uE)('

更新日志

v2.5.4.110

  1. 重新构建项目文档体系,使用纯静态页面,替代已有 Gitee Wiki 文档。优化文档结构,提升文档阅读体验。提供全文搜索,便于文档查阅。支持文档独立部署,方便使用者搭建独立的文档服务查阅。
  2. 更换Nacos导入包,解决上一版本导入包导入重复问题
  3. Update Readme

v2.5.4.100

  1. 重新梳理所有Nacos配置,提取共性配置至统一配置文件,优化配置属性结构和归类,便于参数修改,降低维护复杂度
  2. 重构数据库相关Nacos配置,优化Maven、Nacos多环境配置与数据库切换的联动性,让数据库切换所需修改的参数更少,切换更顺滑
  3. 解决eurynome-cloud-management编译出现的Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on 4. project XXXX: Input length = 1 -> [Help 1]错误
  4. 解决Redis设置密码后,无法连接出现 NOAUTH Authentication required 错误
  5. 增加MySQL数据库默认数据初始化脚本
  6. 增加最新版Nacos配置导入包
  7. 修复前端UI申请APPKEY页面错误
  8. 修复前端UI切换至单体版后,连接错误问题。
  9. 升级前端UI依赖包版本。
  10. 同步更新相关文档,补充新建子模块、常见问题等部分文档。

v2.5.4.90

  1. 使用Mybatis Plus全面替换已有Mybatis,与Spring Boot Data JPA共存且支持同时使用。使用任何技术都可以无障碍的进行业务代码编写。
  2. 整合Mybatis Plus和Spring Boot Data JPA更换数据库配置属性,一处修改即可以同时修改Mybatis Plus和Spring Boot Data JPA使用数据库类型。
  3. 新增接口XSS脚本攻击过滤机制,同时支持请求参数和JSON请求体过滤。采用Ebay XSS过滤模型,进一步提升防控能力。
  4. 新增SQL 注入攻击防控机制。
  5. 解决eurynome-cloud-gateway和eurynome-cloud-management服务启动调用Kafka问题。
  6. 解决CacheConfigException错误问题,在错误体系中增加配置参数不合理提醒,让信息反馈更加友好。
  7. 解决Spring Boot Admin 不支持Java 8 时间类型问题。
  8. 解决Spring Boot Admin 不显示 Git Properties 信息问题。
  9. 解决修改Redis密码配置生效问题
  10. 梳理dependencies依赖包,对已有依赖进行进行更合理的分类,更加便于依赖包的找寻和维护。
  11. 升级依赖包版本
    • spring-boot-admin 升级至 2.5.1
    • git-commit-id-plugin 升级至 4.9.10
    • docker-maven-plugin 升级至 0.37.0
    • hutool 升级至 5.7.10
    • okhttps 升级至 3.1.4
    • JustAuth 升级至1.16.3
    • aliyun-java-sdk-core 升级至 4.5.25
    • baiducloud-java-sdk 升级至 0.10.175
    • aliyun-java-sdk-oss 升级至 3.13.1
    • cn.jpush.api 升级至 3.5.2
  12. 规范项目文档,增加系统部署、数据库切换等多部分内容
  13. 增加Nacos配置导入包,在没有自动部署功能支持的情况下,也可以更加方便的导入配置。
  14. 替换 UI SweetAlert 过期方法,解决弹出框不会关闭问题
  15. 解决授权码模式(authorization code)验证码被拦截问题

v2.5.4.80

  • 合并eurynome-cloud-curd包和eurynome-cloud-rest包,减少包数量,提升代码维护便捷度。
  • 增加接口幂等处理机制,防止重复提交。增加接口防刷限制机制,防止接口恶意频繁刷新。
  • 接口幂等和防刷机制,均支持全局配置控制,同时提供@Idempotent和@AccessLimited注解进行灵活的、个性化的配置。
  • 接口幂等和防刷机制,缓存标记采用分布式多级缓存进行存储,将低单一访问Redis带来的访问压力,同时支持多实例数据多级缓存本地数据同步。
  • 接口幂等和防刷机制,所涉及标记缓存时间配置全部统一支持Duration时间格式,简化配置参数,提升配置便捷度。同时,优化平台错误响应体系,返回更加友好的错误信息提示。
  • 定义Stamp签章体系,采用统一体系,对SMS短信验证码、JustAuth State、环信Token以及接口幂等和防刷等需临时存储标记相关应用进行统一实现。同时,采用分布式多级缓存进行数据存储,降低单一访问Redis压力。

v2.5.4.65

  • 优化Skywalking打包内容,直接使用Skywalking官方容器
  • 补充RequestMappingScanner对应事件代码,解决单体版扫描Rest API接口后不会存储问题
  • 优化数据库脚本以及数据库表结构和默认数据自动初始化机制。解决在第一次运行时,Spring Data JPA JDBC初始化机制与Hibernate 初始化机制冲突问题。
  • 在Gitee Wiki中,增加数据库初始化说明文档
  • 删除部分预留代码,减少暂时不必要的代码对使用者带来的误导。
  • 前端UI中,增加部分配置,使用者可以通过注释部分配置,让前端UI快速支持单体版。

v2.5.4.60

  • Spring Boot 版本升级至 2.5.4
  • Skywalking 版本升级至 8.7.0
  • 微服务日志输出至日志中心格式。
  • 增加Swagger注入条件注解,优化日志中心相关配置采用统一常量控制
  • 增加自定义Property"助手"数据统一自动编译生成配置,无须额外设置,在IDE中编辑配置属性时可自动弹出提示
  • 修复Kafka配置不生效问题。
  • 解决单体版自动启动Kafka问题。
  • 暂时关闭单体版Swagger,规避Swagger会自动启动Kafka问题。

v2.5.4.55

  • 整合代码,将constant包代码整合至common包中。删除constant包。
  • 完善Rest接口校验机制,以及相关自定义错误码
  • 统一spring boot validation错误信息,将其整合至平台统一响应实体Result中。无须在各个Rest接口中,添加BindingResult参数。

v2.5.4.50

  • 优化服务本地权限存储逻辑,解决权限属性数据重复存储,不会替换问题。
  • 重新梳理Spring Security OAuth2 方法级表达式动态权限鉴权逻辑,摒弃无用的权限验证Voter逻辑,使用统一逻辑实现@PreAuthorize注解权限的全面动态可配置化。统一平台接口- 白名单,IP地址白名单,以及Scope绑定URL的管理。
  • 重构UserDetails用户信息组织逻辑,使用Spring Security标准代码,替换自定义逻辑代码,降低代码冗余,与自研方法级动态权限完美融合。
  • 优化平台权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及分布式各服- 务多实例等各种应用场景。
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 清理系统无用代码。
  • 增加方法级动态权限演示动图,更新Readme

v2.5.4.40

  • 优化自定义多级缓存,实现可以统一设置allowNullValues值,并解决存储空值时卡死问题。
  • 重新梳理、优化系统权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及- - 分布式各服务多实例等各种应用场景。
  • 增加Kafka条件注入配置,将条件转换为@ConditionalOnXXX,方便管理和维护。避免单体版应用相关依赖过度依赖Kafka而导致的无法启动
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 去除传统Kafka Producer 通用类,改为统一使用 Spring Cloud Bus

v2.5.4.30

  • 重新调整Property配置,规范Property定义。修改相关配置
  • 调整包,以及包相关依赖关系。让包之间的依赖更加合理
  • 增加Kafka配置,增加@KafkaListener动态控制,以避免在不需要的情况下Kafka的自动开启。
  • 调整部分常理代码位置,常量代码基本调整完成
  • 将原有自定义条件,转换为@ConditionalOnXXX注解,让使用更加便捷
  • 日志中心是否开启状态,改为@ConditionalOnLogCenterEnabled注解

v2.5.4.20

  • 本地权限缓存更换为JetCache,为服务多实例的权限扫描和存储提供更好的支持
  • 将数据访问策略从Conditional类,升级为Conditional注解,使用更加便捷
  • 调整包依赖关系,新建assistant、constant包,删除message包。
  • 逐步将平台中各类非独有常量移入constant包方便管理和修改
  • 采用Spring Boot Event和Spring Cloud Bus Event 机制重构接口收集逻辑。支持单体架构、UPMS、分布式多实例等不同场景接口扫描的特殊需求
  • 优化Docker Compose配置,使用Debezium Kafka 替换已有kafka,以支持Debezium应用
  • 删除无用代码

v2.5.4.10

  • 全网首个实现Spring Security 动态URL权限与注解表达式权限有机整合,并且可以动态配置的微服务框架。
  • 全面支持方法级权限控制,Security OAuth2 permitAll等方法权限以及@PreAuthorize注解权限,均支持动态配置。目前支持以下权限的动态配置: · hasRole · hasAnyRole · hasAuthority · hasAnyAuthority · hasIpAddress · #oauth2.clientHasRole · #oauth2.clientHasAnyRole · #oauth2.hasScope · #oauth2.hasAnyScope · #oauth2.hasScopeMatching · #oauth2.hasAnyScopeMatching · #oauth2.denyOAuthClient · #oauth2.isOAuth · #oauth2.isUser · #oauth2.isClient
  • 彻底解决使用withObjectPostProcessor方式,会覆盖外部匹配规则问题。
  • 真正实现Scope权限与URL权限的关联与管控,拓展OAuth2默认只进行Scope简单对比的实现逻辑。
  • 实现动态权限配置的多服务同步。
  • 暂时去除JetCache,全面使用自研支持Hibernate二级缓存的多级缓存。
  • 修改配置文件配置
  • 删除无用代码

v2.5.3.60

  • Nacos版本升级至2.0.3
  • Hutool版本升级至5.7.6
  • 修改部分代码名称
  • 修改配置文件配置参数

v2.5.3.50

  • 将所有服务包括UAA的权限存储,改为本地和认证中心,多级分布式存储和验证。
  • 增加策略模式,支持认证中心权限数据直连和远程消息两种存储方式动态切换。
  • 改进自研多级缓存,解决Hibernate二级缓存进行数据缓存时产生的事务锁问题。
  • 删除无用代码
  • 为动态Scope权限做铺垫。
  • 全面支持方法级权限控制。

v2.5.3.40

  • Spring Boot 版本升级至 2.5.3
  • 采用新的Hash算法,缩短权限标识;简化用户权限信息,以缩短平台生成JWT Token的长度
  • git commit 插件由pl.project13.maven » git-commit-id-plugin改为io.github.git-commit-id » git-commit-id-maven-plugin。
  • git commit 插件升级至 5.0.0 版本

v2.5.3.30

  • 重构用户中心用户人员体系,将平台用户、第三方社交登录用户、人事管理用户以及Camunda工作流用户体系无缝融合。
  • 人事管理体系人员唯一化管理,同时支持企业、党组、团青等多种类型的机构类型,便于企业人事管理。
  • 基于Debezium实现数据库变更数据捕获,实现人事管理信息与Camunda工作流用户实时同步。
  • 树形结构通用代码实现逻辑与Hutool Tree一致,因此采用Hutool Tree 全面替换已有的Tree代码。
  • 删除不再使用的通用类代码。
  • 修改说明文档

v2.5.3.10

  • 自研基于Caffeine和Redis分布式两级缓存
  • 完美支持JPA Hibernate二级缓存
  • 完美支持各类查询数据缓存以及JPA @ManyToMany, @ManyToOne等关联查询。
  • 实现基于Caffeine的Hibernate二级缓存,可与自研两级缓存快速切换,仅使用本地缓存。
  • 极大的简化了原有自研的基于JetCache的缓存使用方式。
  • 保留JetCache,可根据实际使用需要使用。
  • 已有服务接口相关代码,均已更新自研分布式两级缓存模式。

2.5.2.40

  • Redis Value 默认序列化工具修改为Jackson2JsonRedisSerializer
  • jetcache valueEncoder 和 valueDecoder 修改为kryo
  • 部分代码的日志改为传统方式,不再使用@Slf4j注解
  • 抽象实体共性属性,拓展基础实体,以支持JPA视图类的ORM映射。
  • 重构基础Service,将基础Service的读操作与其它操作分离,以支持“视图”相关Service的编写。
  • 重构基础Controller,将基础Controller的读操作与其它操作分离,以支持“视图”相关Controller的编写。
  • 将Hibernate Validator替换为spring-boot-starter-validation
  • 删除JPA过期方法封装

v2.5.2.30

  • Spring Boot 版本升级至2.5.2
  • Spring Boot Admin 版本升级至2.4.2
  • 升级其它相关依赖版本

v2.5.2.25

  • Skywalking升级至8.6.0

v2.5.2.20

  • Spring Boot 升级至2.5.1
  • Camunda 升级至7.15.0
  • 其它依赖包版本升级
  • Swagger回滚至2.9.2,解决Swagger接口测试相关问题以及Knife4 Authorize不显示问题
  • 结构性调整平台相关配置属性

v2.5.1.0

  • Spring Boot 大版本升级至2.5.0

v2.4.5.60

  • 修改负载均衡不生效问题
  • 调整包依赖关系
  • 升级版本

v2.4.5.48

  • 正式发布开源版本
',49),t={render:function(i,l){return a}}}}]); \ No newline at end of file diff --git a/documents/guides/assets/js/v-c0f957a0.38e49d70.js b/documents/guides/assets/js/v-c0f957a0.38e49d70.js new file mode 100644 index 000000000..9d81836d2 --- /dev/null +++ b/documents/guides/assets/js/v-c0f957a0.38e49d70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[781],{3597:(e,a,t)=>{t.r(a),t.d(a,{data:()=>r});const r={key:"v-c0f957a0",path:"/documents/",title:"介绍",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"总体架构",slug:"总体架构",children:[]},{level:2,title:"功能演示",slug:"功能演示",children:[{level:3,title:"[1]、基于URL的方法级动态权限配置",slug:"_1-、基于url的方法级动态权限配置",children:[]},{level:3,title:"[2]、服务调用链监控",slug:"_2-、服务调用链监控",children:[]}]},{level:2,title:"版本号说明",slug:"版本号说明",children:[]},{level:2,title:"交流反馈",slug:"交流反馈",children:[]}],filePathRelative:"documents/README.md",git:{updatedTime:1631030613e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:2}]}}},3544:(e,a,t)=>{t.r(a),t.d(a,{default:()=>g});var r=t(6252);const i=(0,r.uE)('

介绍

Eurynome Cloud 微服务架构


JDK 1.8+  Spring Boot 2.5.4  Spring Cloud 2020.0.3  Spring Cloud Alibaba 2021.1  Nacos 2.0.3  License Apache 2.0  码匠君  Version 2.5.4.120  Gitee star  Gitee fork

提示

有幸负责过一个“中台”项目,彻底告别了SSH。随着微服务以及相关架构使用和研究深入,发现很多方面都不能满足需求。研究过很多优秀的开源项目,感觉都不太适合自己。所以就想自己做一套属于自己的微服务架构,因此就有了Eurynome-Cloud

Eurynome Cloud 是一款企业级微服务架构和服务能力开发平台。基于 Spring Boot 2.5.4Spring Cloud 2020.0.3Spring Cloud Alibaba 2021.1Nacos 2.0.3 等最新版本开发,遵循 Spring Boot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能,代码简洁,架构清晰,非常适合学习和企业作为基础框架使用

总体架构

架构图)

功能演示

提示

有特点的功能,正在逐步添加。

[1]、基于URL的方法级动态权限配置

架构图

[2]、服务调用链监控

架构图

版本号说明

本系统版本号,分为四段。

  • 第一段和第二段,与 Spring Boot 版本对应,根据采用的 Spring Boot 版本变更。例如,当前采用 Spring Boot 2.4.6 版本,那么就以2.4.X.X开头
  • 第三段,表示系统功能的变化
  • 第四段,表示系统功能维护及优化情况

交流反馈

',18),o=(0,r.Uk)("有问题欢迎提交"),l={href:"https://gitee.com/herodotus/eurynome-cloud/issues",target:"_blank",rel:"noopener noreferrer"},s=(0,r.Uk)("ISSUS"),n=(0,r.Uk)(" ,请写清楚问题的具体原因,重现步骤和环境(上下文)。Gitee评论中有字数限制,稍微复杂的内容不太便于回复。"),d=(0,r._)("li",null,"邮箱:herodotus@aliyun.com",-1),h=(0,r.Uk)("QQ群:"),c={href:"https://jq.qq.com/?_wv=1027&k=bIerJVy8",target:"_blank",rel:"noopener noreferrer"},u=(0,r.Uk)("922565573"),g={render:function(e,a){const t=(0,r.up)("OutboundLink");return(0,r.wg)(),(0,r.iD)(r.HY,null,[i,(0,r._)("ul",null,[(0,r._)("li",null,[o,(0,r._)("a",l,[s,(0,r.Wm)(t)]),n]),d,(0,r._)("li",null,[h,(0,r._)("a",c,[u,(0,r.Wm)(t)])])])],64)}}}}]); \ No newline at end of file diff --git a/documents/guides/assets/js/v-c0f957a0.93f13f72.js b/documents/guides/assets/js/v-c0f957a0.93f13f72.js deleted file mode 100644 index a31bcf062..000000000 --- a/documents/guides/assets/js/v-c0f957a0.93f13f72.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkeurynome_cloud_document=self.webpackChunkeurynome_cloud_document||[]).push([[781],{3597:(e,a,t)=>{t.r(a),t.d(a,{data:()=>r});const r={key:"v-c0f957a0",path:"/documents/",title:"介绍",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"总体架构",slug:"总体架构",children:[]},{level:2,title:"功能演示",slug:"功能演示",children:[{level:3,title:"[1]、基于URL的方法级动态权限配置",slug:"_1-、基于url的方法级动态权限配置",children:[]},{level:3,title:"[2]、服务调用链监控",slug:"_2-、服务调用链监控",children:[]}]},{level:2,title:"版本号说明",slug:"版本号说明",children:[]},{level:2,title:"交流反馈",slug:"交流反馈",children:[]}],filePathRelative:"documents/README.md",git:{updatedTime:1631030613e3,contributors:[{name:"herodotus",email:"pointer_v@qq.com",commits:2}]}}},1687:(e,a,t)=>{t.r(a),t.d(a,{default:()=>g});var r=t(6252);const i=(0,r.uE)('

介绍

Eurynome Cloud 微服务架构


JDK 1.8+  Spring Boot 2.5.4  Spring Cloud 2020.0.3  Spring Cloud Alibaba 2021.1  Nacos 2.0.3  License Apache 2.0  码匠君  Version 2.5.4.80  Gitee star  Gitee fork

提示

有幸负责过一个“中台”项目,彻底告别了SSH。随着微服务以及相关架构使用和研究深入,发现很多方面都不能满足需求。研究过很多优秀的开源项目,感觉都不太适合自己。所以就想自己做一套属于自己的微服务架构,因此就有了Eurynome-Cloud

Eurynome Cloud 是一款企业级微服务架构和服务能力开发平台。基于 Spring Boot 2.5.4Spring Cloud 2020.0.3Spring Cloud Alibaba 2021.1Nacos 2.0.3 等最新版本开发,遵循 Spring Boot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能,代码简洁,架构清晰,非常适合学习和企业作为基础框架使用

总体架构

架构图)

功能演示

提示

有特点的功能,正在逐步添加。

[1]、基于URL的方法级动态权限配置

架构图

[2]、服务调用链监控

架构图

版本号说明

本系统版本号,分为四段。

  • 第一段和第二段,与 Spring Boot 版本对应,根据采用的 Spring Boot 版本变更。例如,当前采用 Spring Boot 2.4.6 版本,那么就以2.4.X.X开头
  • 第三段,表示系统功能的变化
  • 第四段,表示系统功能维护及优化情况

交流反馈

',18),o=(0,r.Uk)("有问题欢迎提交"),l={href:"https://gitee.com/herodotus/eurynome-cloud/issues",target:"_blank",rel:"noopener noreferrer"},s=(0,r.Uk)("ISSUS"),n=(0,r.Uk)(" ,请写清楚问题的具体原因,重现步骤和环境(上下文)。Gitee评论中有字数限制,稍微复杂的内容不太便于回复。"),d=(0,r._)("li",null,"邮箱:herodotus@aliyun.com",-1),h=(0,r.Uk)("QQ群:"),c={href:"https://jq.qq.com/?_wv=1027&k=bIerJVy8",target:"_blank",rel:"noopener noreferrer"},u=(0,r.Uk)("922565573"),g={render:function(e,a){const t=(0,r.up)("OutboundLink");return(0,r.wg)(),(0,r.iD)(r.HY,null,[i,(0,r._)("ul",null,[(0,r._)("li",null,[o,(0,r._)("a",l,[s,(0,r.Wm)(t)]),n]),d,(0,r._)("li",null,[h,(0,r._)("a",c,[u,(0,r.Wm)(t)])])])],64)}}}}]); \ No newline at end of file diff --git a/documents/guides/basic-knowledge/index.html b/documents/guides/basic-knowledge/index.html index b317daa17..a7f77a961 100644 --- a/documents/guides/basic-knowledge/index.html +++ b/documents/guides/basic-knowledge/index.html @@ -5,11 +5,11 @@ 介绍 | Eurynome Cloud - +

介绍

说明

一部分朋友使用 Eurynome Cloud 是本着学习的目的,以期掌握更多的IT技术技能。因此,开辟了本栏目。

本栏目会逐步增加 Eurynome Cloud 所涉及各类技术的基础知识,希望可以帮助使用者更好的了解 Eurynome Cloud 所使用的技术,让使用者可以更快速的开展系统的使用和开发。

很多技术内容单独拿出来都是一个很大的课题,而且市面上也会有较多的书籍供了解和学习。本栏目内容定位是收集整理一些相关技术的入门知识,起到抛砖引玉的作用。

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git a/documents/guides/basic-knowledge/spring-data-jpa.html b/documents/guides/basic-knowledge/spring-data-jpa.html index 2fc14b169..663cf731a 100644 --- a/documents/guides/basic-knowledge/spring-data-jpa.html +++ b/documents/guides/basic-knowledge/spring-data-jpa.html @@ -5,7 +5,7 @@ Spring Data JPA | Eurynome Cloud - + @@ -725,6 +725,6 @@ } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14

更多关于Jpa Specificationsopen in new windowExampleopen in new window查询请查阅官方文档

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git a/documents/guides/documents-athena/index.html b/documents/guides/documents-athena/index.html index 3120d0a75..456b20af9 100644 --- a/documents/guides/documents-athena/index.html +++ b/documents/guides/documents-athena/index.html @@ -5,11 +5,11 @@ 介绍 | Eurynome Cloud - +

介绍

Athena 是什么?

  • Eurynome Cloud Athena 是从 Eurynome Cloud 中提取出来的、可以独立运行的、基于OAuth2认证的、前后端分离的单体式后台管理脚手架。
  • Eurynome Cloud Athena 本质上就是eurynome-cloud-oauth-starter的应用。从pom中可以看到该工程核心依赖就是 Eurynome Cloudeurynome-cloud-oauth-starter
  • Eurynome Cloud Athena 更多的是一个演示性工程,用来示例如何使用eurynome-cloud-oauth-starter,以及相关的配置参数是如何配置的。也可以完全不用照搬Athena工程,自己新建一个Spring Boot工程,添加eurynome-cloud-oauth-starter依赖和相应的配置也可以使用。

Athena 不是什么?

Eurynome Cloud Athena 并不是一个完整的开源项目,其核心代码eurynome-cloud-oauth-starter,需要通过编译 Eurynome Cloud 生成(目前 Eurynome Cloud 核心包并没有提交至Maven中央仓库)。

为什么 Athena 和 Eurynome Cloud 共享代码?

不管是单独搭建基于Spring SecurityOAuth2的后台管理脚手架,还是构建基于Spring Cloud的分布式微服务架构,Spring SecurityOAuth2核心代码的应用方式都是不变的,可以是通用的,因此将SecurityOAuth2以及其它通用的代码放在 Eurynome Cloud 中,编译后供 Eurynome Cloud Athena 使用。

曾经也考虑过,在重新提取一个工程,专门放置通用代码。但是这种方式,额外多了一道编译手续,也不便于对 Eurynome Cloud 整个代码的了解和使用,因此放弃了这种方式。

为什么构建 Athena?

基于Spring CloudSpring Cloud Alibaba的微服务架构,已经成为应用建设的主流方案。但是不可否认的是,搭建一套微服务架构所需的基础架构越来越多,也越来越复杂,所需的配套资源也越来越大。仅仅是在开发电脑上搭建一套运行开发调试环境,其复杂度和所需的资源也不容小觑。而很多应用,特别是小型应用,在早期开发中或者用户量不大的前期完全没有必要上一整套微服务,额外增加复杂度。很多情况下一套单体的、前后端分离的后台就足以满足。

因为以上的考虑,才构建的 Eurynome Cloud Athena。其实只要Spring SecurityOAuth2核心代码写的足够通用,单体式架构就自然而然的产生了。

Eurynome Cloud Athena 不需要搭建NacosELKSentinelSkywalking等基础设施,只要一个数据库就可以独立运行,而且具备微服务架构除服务管理以外的所有功能。不仅编译和运行速度有几倍的提升,而且只要代码规范、分包合理,可以快速无缝迁移到微服务架构。这有助于在项目早期快速建设项目,方便开发人员在本地进行开发以及技术研究。

如果你没有大量的时间和资源搭建微服务架构,那么就可以尝试使用 Eurynome Cloud Athena,可以从另一个角度快速、全面地了解 Eurynome Cloud

更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
- + diff --git a/documents/guides/documents/index.html b/documents/guides/documents/index.html index 0d9c754b3..b90759de3 100644 --- a/documents/guides/documents/index.html +++ b/documents/guides/documents/index.html @@ -5,11 +5,11 @@ 介绍 | Eurynome Cloud - + -

介绍

Eurynome Cloud 微服务架构


JDK 1.8+  Spring Boot 2.5.4  Spring Cloud 2020.0.3  Spring Cloud Alibaba 2021.1  Nacos 2.0.3  License Apache 2.0  码匠君  Version 2.5.4.80  Gitee star  Gitee fork

提示

有幸负责过一个“中台”项目,彻底告别了SSH。随着微服务以及相关架构使用和研究深入,发现很多方面都不能满足需求。研究过很多优秀的开源项目,感觉都不太适合自己。所以就想自己做一套属于自己的微服务架构,因此就有了Eurynome-Cloud

Eurynome Cloud 是一款企业级微服务架构和服务能力开发平台。基于 Spring Boot 2.5.4Spring Cloud 2020.0.3Spring Cloud Alibaba 2021.1Nacos 2.0.3 等最新版本开发,遵循 Spring Boot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能,代码简洁,架构清晰,非常适合学习和企业作为基础框架使用

总体架构

架构图)

功能演示

提示

有特点的功能,正在逐步添加。

[1]、基于URL的方法级动态权限配置

架构图

[2]、服务调用链监控

架构图

版本号说明

本系统版本号,分为四段。

  • 第一段和第二段,与 Spring Boot 版本对应,根据采用的 Spring Boot 版本变更。例如,当前采用 Spring Boot 2.4.6 版本,那么就以2.4.X.X开头
  • 第三段,表示系统功能的变化
  • 第四段,表示系统功能维护及优化情况

交流反馈

  • 有问题欢迎提交ISSUSopen in new window ,请写清楚问题的具体原因,重现步骤和环境(上下文)。Gitee评论中有字数限制,稍微复杂的内容不太便于回复。
  • 邮箱:herodotus@aliyun.com
  • QQ群:922565573open in new window
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- +

介绍

Eurynome Cloud 微服务架构


JDK 1.8+  Spring Boot 2.5.4  Spring Cloud 2020.0.3  Spring Cloud Alibaba 2021.1  Nacos 2.0.3  License Apache 2.0  码匠君  Version 2.5.4.120  Gitee star  Gitee fork

提示

有幸负责过一个“中台”项目,彻底告别了SSH。随着微服务以及相关架构使用和研究深入,发现很多方面都不能满足需求。研究过很多优秀的开源项目,感觉都不太适合自己。所以就想自己做一套属于自己的微服务架构,因此就有了Eurynome-Cloud

Eurynome Cloud 是一款企业级微服务架构和服务能力开发平台。基于 Spring Boot 2.5.4Spring Cloud 2020.0.3Spring Cloud Alibaba 2021.1Nacos 2.0.3 等最新版本开发,遵循 Spring Boot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能,代码简洁,架构清晰,非常适合学习和企业作为基础框架使用

总体架构

架构图)

功能演示

提示

有特点的功能,正在逐步添加。

[1]、基于URL的方法级动态权限配置

架构图

[2]、服务调用链监控

架构图

版本号说明

本系统版本号,分为四段。

  • 第一段和第二段,与 Spring Boot 版本对应,根据采用的 Spring Boot 版本变更。例如,当前采用 Spring Boot 2.4.6 版本,那么就以2.4.X.X开头
  • 第三段,表示系统功能的变化
  • 第四段,表示系统功能维护及优化情况

交流反馈

  • 有问题欢迎提交ISSUSopen in new window ,请写清楚问题的具体原因,重现步骤和环境(上下文)。Gitee评论中有字数限制,稍微复杂的内容不太便于回复。
  • 邮箱:herodotus@aliyun.com
  • QQ群:922565573open in new window
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
+ diff --git "a/documents/guides/documents/\345\211\215\347\253\257\346\211\213\345\206\214.html" "b/documents/guides/documents/\345\211\215\347\253\257\346\211\213\345\206\214.html" index 1ffc40738..85e30eea3 100644 --- "a/documents/guides/documents/\345\211\215\347\253\257\346\211\213\345\206\214.html" +++ "b/documents/guides/documents/\345\211\215\347\253\257\346\211\213\345\206\214.html" @@ -5,11 +5,11 @@ 前端手册 | Eurynome Cloud - +
更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\345\244\232\347\216\257\345\242\203\351\205\215\347\275\256.html" "b/documents/guides/documents/\345\244\232\347\216\257\345\242\203\351\205\215\347\275\256.html" index ee88e2c81..7daa29656 100644 --- "a/documents/guides/documents/\345\244\232\347\216\257\345\242\203\351\205\215\347\275\256.html" +++ "b/documents/guides/documents/\345\244\232\347\216\257\345\242\203\351\205\215\347\275\256.html" @@ -5,7 +5,7 @@ 多环境配置 | Eurynome Cloud - + @@ -83,6 +83,6 @@ </properties> </profile>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Docker和K8S 多环境配置

DockerK8S的多环境,因为不同使用者使用的方式不同,Eurynome Cloud 并没有过多涉及。Eurynome Cloud 中,也简单定义了自己Docker多环境,涉及productiondevelopment两个环境,主要区别是production环境docker打包会包含Skywalking Agent,而development环境docker打包只会包含应用,通过执行不同的docker-compose文件进行区分仅此而已。如果不使用Skywalking,使用development环境打包docker即可。

Eurynome Cloud 的多环境配置

微服务架构涉及多方面内容,Eurynome Cloud的为解决多环境,综合使用MavenSpring Boot以及Nacos多环境的特点,以支持微服务的多环境切换和多种数据库的配置支持。

Eurynome Cloud 中的Maven多环境配置

Eurynome Cloud Maven 多环境配置,在工程根目录下的pom.xml中进行配置。这里的环境配置主要解决以下问题:

  1. 传递参数:传递<profile.name><database.type>两个参数。
  • <profile.name>的值传递至bootstrap.yml中,这样就可以联动使用Spring BootNacos的多环境配置;
  • <database.type>参数,传递至bootstrap.yml中,用于指定具体使用的数据库配置
  1. Dashboard:通过<skip.build.source.package><skip.copy.docker.resource><skip.build.git.commit.info>三个参数进行打包控制。
  • <skip.build.source.package> 控制是否构建源代码包:构建源代码包便于调试eurynome-cloud-athena的调试。
  • <skip.copy.docker.resource> 控制是否拷贝服务jar包:编译完成后,将可执行额外操作,将服务jar包拷贝到统一的docker build context下,使用统一配置build docker,这样就不必每一个服务都编写Dockerfile
  • <skip.build.git.commit.info> 控制是否生成Git信息:是否将Git commit等相关信息在编译打包时,写入到jar包中。写入Git commit等相关信息,可以便于在运维过程中快速区分不同jar对应的提交信息、编译、开发者等相关信息。
  1. NacosSentinel Dashboard地址指定

指定不同环境下Nacos配置中心、服务发现和Sentinel Dashboard的地址,Nacos配置中心、服务发现地址无法写在Nacos的配置中,所以在此处进行设置。

Eurynome Cloud 中的Spring Boot和Nacos多环境配置

  • 通过Spring Bootprofiles机制,实现Spring BootNacos的联动。
  • 利用NacosGroup信息,实现Nacos配置的多环境。${project_home}/platform/eurynome-cloud-management/resources/configs目录下,还有一级目录。这级目录的名称,是对应Nacos中的Group。所以在向Nacos导入配置时,一定要注意Group的创建和匹配。切勿全部导入到DEFAULT组下,这样会导致无法正常运行。
更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\345\277\253\351\200\237\344\272\206\350\247\243.html" "b/documents/guides/documents/\345\277\253\351\200\237\344\272\206\350\247\243.html" index 0e16118e3..0edcfc33c 100644 --- "a/documents/guides/documents/\345\277\253\351\200\237\344\272\206\350\247\243.html" +++ "b/documents/guides/documents/\345\277\253\351\200\237\344\272\206\350\247\243.html" @@ -5,11 +5,11 @@ 快速了解 | Eurynome Cloud - +

快速了解

项目简介

Eurynome Cloud 是一款基于 Spring BootSpring CloudSpring Cloud AlibabaVueVuetify 的前后端分离微服务架构和服务能力开发平台。同时还提供与微服务版本技术体系一致的单体版架构,无须搭建复杂的微服务基础设施,即可快速搭建基于 OAuth2 的、前后端分离的服务应用。

主要特性

  • 面向互联网和企业级应用开发(支持手机验证码、小程序、第三方应用登录、支持证照审核、文本图片音频视频内容审核、企业人事管理等诸多功能)
  • Maven多模块依赖,高度模块化和可配置化,方便模块升级、增减模块。
  • 适配多种数据库类型,同时支持 Spring Data JPAMybatis Plus
  • 支持动态方法级权限,无须配置 @PreAuthorize 注解、使用 antMatchers 方法控制权限。
  • 完善的XSS防范及脚本过滤和SQL注入防控机制,便捷的、灵活的防刷机制、杜绝外部恶意攻击
  • 多种消息队列支持,基于消息总线适配 RabbitMQKafka
  • 自动化权限数据收集、数据表结构默认数据自动初始化、Nacos 配置自动导入。
  • 自研多级数据缓存,完美融合 Spring Data JPA & Hibernate 二级查询缓存。
  • 共享式、统一性多环境配置,统一化配置设定,简化配置参数修改数量,降低修改配置出错率,提升平台维护便捷性。

技术选型

1、系统环境

  • Java EE 8
  • Servlet 3.0
  • Apache Maven 3.0

2、主框架

  • Spring Boot 2.5.X
  • Spring Cloud 2020.0.3
  • Spring Cloud Alibaba 2021.1
  • Spring Security & OAuth 2.0

3、持久层

  • Apache Mybatis & Mybatis Plus
  • Spring Boot Data JPA
  • Spring Boot Validation
  • Jetcache、Caffeine、Redis lettuce

内置功能

  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。包含第三方登录用户信息的管理。
  • 角色管理:创建用户角色,为角色权限分配、设置角色接口权限划分。
  • 权限管理:动态设定接口表达式权限,替代在代码中使用 @PreAuthorize 注解、antMatchers 方法等传统权限控制手段。
  • 终端管理OAuth2 终端信息管理,设置终端认证类型、Token有效时间、权限范围等信息。
  • 应用管理:结合 OAuth2 机制,创建应用信息,申请APP_KEY。
  • 范围管理:创建终端权限范围、设置范围对应权限。
  • 机构管理:配置系统组织机构,支持树形结构展示。
  • 部门管理:配置机构下属部门信息,支持树形机构展示。
  • 人员管理:配置机构人员信息,为人员分配和创建用户信息。
  • 归属管理:配置机构、部门和人员的归属关系,支持人员信息唯一,绑定标准机构、党团、工会等多种机构类型。避免针对不同机构类型为统一人员创建重复信息。此种结构设定,与Camunda工作流人员体系一一对应。
  • 系统接口:根据业务代码自动生成相关的api接口文档。
  • 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  • 工作流编辑器:基于BPMN 2.0标准的在线工作流模型编辑器,支持SVGXML格式导入、导出。
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\346\225\260\346\215\256\345\210\235\345\247\213\345\214\226.html" "b/documents/guides/documents/\346\225\260\346\215\256\345\210\235\345\247\213\345\214\226.html" index c304cb227..514c9e371 100644 --- "a/documents/guides/documents/\346\225\260\346\215\256\345\210\235\345\247\213\345\214\226.html" +++ "b/documents/guides/documents/\346\225\260\346\215\256\345\210\235\345\247\213\345\214\226.html" @@ -5,11 +5,11 @@ 数据初始化 | Eurynome Cloud - +

数据初始化

系统初次部署数据库初始化内容

Eurynome Cloud 在初次使用时,数据初始化涉及以下内容:

  • 数据库表创建,其中涉及以下几部分表的创建:
    1. OAuth2 标准表结构的创建
    2. 服务中涉及业务表的创建
    3. 个别View或函数的创建
  • 默认数据初始化,其中涉及以下几部分数据的初始化
    1. 默认用户、角色等数据的初始化
    2. 平台已有服务Rest API接口数据初始化以及权限数据的转化。

数据表及数据初始化说明

[1]、OAuth2 标准表结构的创建

目前系统提供MySQLPostgreSQL 两种数据库的OAuth2标准的表结构创建脚本,可以在工程的${project_home}/configurations/scripts目录下找到对应的Schema SQL脚本。

${project_home}/packages/eurynome-cloud-security包的resources目录中,也存有一份OAuth2的表结构创建脚本以及默认数据的导入脚本。这些脚本与${project_home}/configurations/scripts内容一致,主要是用于微服务版和单体版的自动化表结构创建和数据初始化,具体用法后面会讲到。

[2]、服务中涉及业务表的创建

系统虽然同时支持MybatisJPA,但是已有服务的代码实现目前均是基于JPA编写,因此服务中涉及的业务表,只要spring.jpa.hibernate.ddl-auto属性设置为非none值,那么就可以自动创建。

提示

在微服务架构,可以通过修改Nacos对应环境下(系统支持多环境,不同环境对应Nacos不同的组)的eurynome-cloud-environment.yaml配置中的herodotus.switch.database.ddl-auto值进行修改。

[3]、个别View或函数的创建

如果已有功能使用到了数据库的视图、函数(或存储过程)等特性,那么会提供相应的创建脚本,可以在工程的${project_home}/configurations/scripts目录下找到对应的Schema SQL脚本。

注:目前开源版本暂不涉及,可以忽略本项内容

[4]、默认用户、角色等数据的初始化

表结构创建完成之后,可以通过导入数据初始化脚本,导入系统默认的用户、角色以及OAuth2相关数据。该脚本可以在${project_home}/services/eurynome-cloud-upms-ability包的resources目录下找到。

[5]、服务Rest API接口数据初始化

系统基础的权限数据,来源于所有服务中包含的Rest API接口。为了方便使用,服务在正常启动之后,会扫描所有的RestController,获取其中所有的接口信息后,存入系统的sys_authority表作为权限数据。

说明

系统对扫描RestController,获取接口信息功能提供了开关配置,可以通过配置设置是否开启扫描功能。同时,考虑到减少配置,提高使用的便捷性,所以是否开启注解扫描的配置直接使用的是spring.jpa.hibernate.ddl-auto的值。即:如果spring.jpa.hibernate.ddl-auto的值是none,那么就关闭注解扫描功能。

说明

系统是以服务名、请求类型以及请求URL组合值的MD5值作为权限的ID,所以只要保证“服务名、请求类型、请求URL”这三个值不改变,那么权限的ID就不会变化。其中任意一个值有变化,就会被当成新的权限数据存入sys_authority表中,这时就一定请注意你所配置的role和authority的关系。

说明

扫描所有的RestController获取接口信息后,是使用 jpa 的save()方法进行权限数据的保存。这个方法既有新增功能又有更新功能,如果sys_authority表中没有该条权限数据就新增,如果有那么就更新。因此,尽量不要手动修改sys_authority的值,修改后的值会被重新的扫描RestController获取到的值覆盖。

数据表和数据自动初始化

因为是使用spring-data-jpa,所以可以使用spring-data-jpa提供的机制进行数据表和数据自动初始化。

spring-data-jpa中,jpa的默认实现使用的是Hibernate。提供了基于JDBCHibernate两部分数据表创建和初始化机制:

  • 基于JDBC的初始化机制:通过配置spring.sql.init相关属性实现,使用jdbc读取sql脚本实现。schema相关脚本创建表、视图、存储过程等,data相关脚本导入数据。
  • 基于Hibernate的初始化机制:通过配置spring.jpa.hibernate.ddl-auto相关属性实现,利用Hibernate自身的机制实现。目前只用到的了建表功能。

Eurynome Cloud的数据表和数据自动初始化就是基于这两种机制实现,用Hibernate的初始化机制创建服务涉及的相关业务表,用JDBC的初始化机制创建OAuth2的标准表和导入所有的初始化数据。

由于spring-data-jpaJDBC的初始化机制,在服务启动过程中会早于Hibernate的初始化机制执行,这就导致在第一次执行数据表和数据自动初始化时会出现问题:服务涉及的业务表还没有创建,JDBC的初始化机制就可开始导入数据,导致数据初始化失败。

解决办法

  1. 将所有表结构和初始数据全部生成为SQL脚本,只使用JDBC的初始化机制进行初始化。因为目前没有使用flyway等数据库版本管理,手动管理的数据库脚本越多,就越容易出现数据库变更后脚本更新不及时导致出错率增大的问题。(后续考虑增加flyway等数据库版本管理功能)
  2. 还是综合使用JDBC的初始化机制和Hibernate的初始化机制,使用一种绕的办法解决初始化时机不同的问题。

具体步骤

  1. 设置属性spring.sql.init.mode=neverspring.jpa.hibernate.ddl-auto=create,先启动一次服务。这次启动Hibernate会把所有服务涉及的业务表创建出来,同时系统会把所有的扫描到的RestController接口存储至sys_authority表中。然后,停掉该服务。
  2. 设置属性spring.sql.init.mode=alwaysspring.jpa.hibernate.ddl-auto=update,再一次启动服务。这次服务启动会JDBC的初始化机制就会创建OAuth2的表结构,以及导入所有初始化数据而不会出错。
  3. 数据初始化成功后,请注意将属性spring.sql.init.mode改回never,防止下次运行再次导入数据导致主键冲突等问题。属性spring.jpa.hibernate.ddl-auto的值可以根据自己实际使用需求需改。一般在开发阶段或设置为update或者none

系统默认账号

系统部署完成后,可以使用一下账号进行登录使用:

  • 默认用户名:system
  • 默认密码:123456
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\346\226\260\345\273\272\345\255\220\346\250\241\345\235\227.html" "b/documents/guides/documents/\346\226\260\345\273\272\345\255\220\346\250\241\345\235\227.html" index 8bfb61efa..a047d5c4d 100644 --- "a/documents/guides/documents/\346\226\260\345\273\272\345\255\220\346\250\241\345\235\227.html" +++ "b/documents/guides/documents/\346\226\260\345\273\272\345\255\220\346\250\241\345\235\227.html" @@ -5,7 +5,7 @@ 新建子模块 | Eurynome Cloud - + @@ -330,6 +330,6 @@ port: 8719 dashboard: @sentinel.server-addr@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\346\233\264\346\215\242\346\225\260\346\215\256\345\272\223.html" "b/documents/guides/documents/\346\233\264\346\215\242\346\225\260\346\215\256\345\272\223.html" index 80eac06e8..d44faf369 100644 --- "a/documents/guides/documents/\346\233\264\346\215\242\346\225\260\346\215\256\345\272\223.html" +++ "b/documents/guides/documents/\346\233\264\346\215\242\346\225\260\346\215\256\345\272\223.html" @@ -5,7 +5,7 @@ 更换数据库 | Eurynome Cloud - + @@ -29,6 +29,6 @@
1

注意

在Maven编译的过程中,<database.type>的值会作为参数传递到各个服务的boostrap.yml配置中,与boostrap.yml中已有的信息拼装成Nacos中对应的配置名。通过这种方式实现Maven多环境、Nacos配置、不同数据库配置的联动

- data-id: eurynome-cloud-database-@database.type@.yaml
   group: common
 
1
2

步骤四:添加数据库JDBC Driver

目前,系统代码已经包含PostgreSQLMySQL8H2三种数据库的JDBC Driver, 如果你使用数据库不在此范围内,那么就需要在代码包eurynome-cloud-datapom.xml中添加对应数据库的JDBC Driver

步骤五:编译工程代码

以上步骤完成之后,使用mvn packagemvn install命令,重新编译工程。

注意

这一步非常重要,因为Maven无法真正做到与yml配置文件的传参,只有通过编译,在编译过程中用pom.xml<database.type>的值,替换yml配置文件中的@database.type@模拟一种参数传递。

修改配置之后,参考数据初始化章节进行数据库初始化工作。

提示

目前仅提供PostgreSQLMySQL两种数据库对应的数据初始化脚本,其它数据库需要自己额外处理。如需要使用Spring Data JPA初始化机制,需要手动修改spring.sql.init.*相关参数。

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\347\216\257\345\242\203\351\203\250\347\275\262.html" "b/documents/guides/documents/\347\216\257\345\242\203\351\203\250\347\275\262.html" index aa982a759..8375c1173 100644 --- "a/documents/guides/documents/\347\216\257\345\242\203\351\203\250\347\275\262.html" +++ "b/documents/guides/documents/\347\216\257\345\242\203\351\203\250\347\275\262.html" @@ -5,7 +5,7 @@ 环境部署 | Eurynome Cloud - + @@ -69,6 +69,6 @@ 或 npm run dev
1
2
3
4
5
6
7
8
9
10
11
12

运行验证

打开浏览器,输入:http://localhost:3000open in new window 默认账户/密码 system/123456) 若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git "a/documents/guides/documents/\351\241\271\347\233\256\344\273\213\347\273\215.html" "b/documents/guides/documents/\351\241\271\347\233\256\344\273\213\347\273\215.html" index 5b00e2c29..e3a60fa1f 100644 --- "a/documents/guides/documents/\351\241\271\347\233\256\344\273\213\347\273\215.html" +++ "b/documents/guides/documents/\351\241\271\347\233\256\344\273\213\347\273\215.html" @@ -5,7 +5,7 @@ 项目介绍 | Eurynome Cloud - + @@ -34,6 +34,6 @@ ├ ├── eurynome-cloud-upms-ability -- 通用用户权限服务 └── └── eurynome-cloud-bpmn-ability -- 工作流服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

核心技术

后端核心技术

(1)Spring相关核心技术及版本

组件版本
Spring Boot2.5.4
Spring Cloud2020.0.3
Spring Cloud Alibaba2021.1
Spring Boot Admin2.5.1
Nacos2.0.3
Sentinel1.8.0
Seata1.3.0

(2)涉及的相关的技术

  • 持久层框架: Spring Data Jpa & Mybatis Plus
  • API网关:Spring Cloud Gateway
  • 服务注册&发现和配置中心: Alibaba Nacos
  • 服务消费:Spring Cloud OpenFeign & RestTemplate & OkHttps
  • 负载均衡:Spring Cloud Loadbalancer
  • 服务熔断&降级&限流:Alibaba Sentinel
  • 服务监控:Spring Boot Admin
  • 消息队列:使用 Spring Cloud 消息总线 Spring Cloud Bus 默认 Kafka 适配RabbitMQ
  • 链路跟踪:Skywalking
  • 分布式事务:Seata
  • 数据缓存:JetCache + Redis + Caffeine
  • 数据库: PostgresqlMySQLOracle ...
  • JSON序列化:Jackson & FastJson
  • 文件服务:阿里云OSS/Minio
  • 数据调试:p6spy
  • 日志中心:ELK
  • 日志收集:Logstash Logback Encoder

前端核心技术

  • Vue2
  • Vuex
  • Vue-router
  • Vue-cli
  • Axios
  • Vuetify
  • Bpmn.js
  • Localforage

版本关系

组件版本关系

Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version
2.2.6.RELEASE1.8.11.4.24.4.02.7.81.3.0
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.0
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.8.01.3.34.4.02.7.81.3.0
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.2.14.4.02.7.61.2.0
2.2.0.RELEASE1.7.11.1.44.4.02.7.4.11.0.0
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE1.7.01.1.44.4.02.7.30.9.0
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE1.6.31.1.14.4.02.7.30.7.1

毕业版本关系(推荐使用)

Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version
Spring Cloud 2020.0.12021.12.4.2
Spring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE
Spring Cloud Greenwich.SR62.1.4.RELEASE2.1.13.RELEASE
Spring Cloud Hoxton.SR32.2.1.RELEASE2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE2.2.0.RELEASE2.2.X.RELEASE
Spring Cloud Greenwich2.1.2.RELEASE2.1.X.RELEASE
Spring Cloud Finchley2.0.4.RELEASE(停止维护,建议升级)2.0.X.RELEASE
Spring Cloud Edgware1.5.1.RELEASE(停止维护,建议升级)1.5.X.RELEASE

功能介绍

[1]、统一安全认证中心

  • OAuth2 安全认证

支持 OAuth2 授权码模式、隐式授权码模式(简单模式)、密码模式和客户端模式四种登录模式

  • JWT Token令牌

采用JWT对OAuth2 Token进行加密

  • 自定义OAuth2页面

自定义OAuth2 login、confirm、error页面,提升系统使用用户体验。可结合自身需求进行修改。

  • OAuth2 登录验证码

OAuth2登录增加验证码保护,支持gif、中文、算数等类型,可通过配置进行修改以及是否显示验证码控制

  • OAuth2登录数据加密传输

基于AES对 OAuth2 登录数据进行动态加密传输,可通过配置对表单参数名进行动态配置,提升系统安全性

  • 平台权限管理

基于RBAC模型,以角色和接口为核心,使用统一逻辑实现@PreAuthorize注解权限与URL权限的全面整合及动态可配置化。统一平台接口白名单,IP地址白名单,以及Scope绑定URL的管理。无须配置Security权限注解,支持URL粒度的鉴权和用户权限的动态配置。 完美支持单体式架构、UPMS自身应用需求、分布式架构以及分布式各服务多实例等各种应用场景。

  • User、Client数据策略访问

支持OAuth2 UserDetailsClientDetails数据直连数据库和Feign两种数据获取策略模式,OAuth2直连数据库性能更优,Feign访问数据服务独立可动态扩展。可通过配置动态修改具体采用哪种策略。

  • 手机短信验证码注册和登录

支持通过手机验证码登录认证,与平台为统一体系,统一返回OAuth2 Token,支持服务接口鉴权

  • 第三方系统社交注册和登录

基于 JustAuth 实现第三方系统社交登录认证,,与平台为统一体系,统一返回 OAuth2 Token,支持服务接口鉴权,。所有 JustAuth 支持的第三方系统均支持。

  • 微信小程序注册和登录

支持微信小程序登录认证,与平台为统一体系,统一返回 OAuth2 Token,支持服务接口鉴权。

  • 其它注册和登录

采用策略模式对外部登录和注册进行支持,目前未支持的登录,可参考标准,动态扩展,即可支持。

[2]、统一服务访问网关

  • 网关动态路由

基于GatewayNacos实现服务网关动态路由,无须增加任何配置,即可支持服务的发现与路由

  • 网关服务鉴权: 服务网关集成部分权限认证功能,提升系统安全性,降低平台压力

  • 网关服务限流

基于Sentinel实现服务的限流,支持基于Gateway Filter的自定义限流

  • 动态文档聚合: 网关动态Swagger文档聚合,使用Swagger 3.0,支持Knife4j增强。不同环境访问控制

  • 统一跨域处理

基于Gateway实现统一跨域处理

  • 统一错误处理

平台统一错误处理,支持自定义错误码体系

  • 自定义动态路由

支持基于DB的动态路由管理与路由规则配置

[3]、微服务架构支撑

  • 服务注册发现

基于Nacos实现服务的注册与发现。

  • 服务负载均衡

Spring Cloud Netflix 停止维护,使用 Spring Cloud Loadbalancer 全面替换Ribbon

  • 服务熔断降级

整合OpenFeignSentinel,从熔断降级、系统负载保护、热点防护等多个维度来保障微服务的稳定性

  • 统一配置中心

基于 Nacos 搭建的统一配置中心,支持配置文件自动导入和关键信息加密,可根据文件夹名称自动分组配置。

  • 统一日志中心

采用TCP直连的方式采集和发送日志,集成 Skywalking TraceID 实现日志聚合及ELK日志分析。通过 @EnableXXX 注解开启或关闭日志采集功能。

  • 分布任务调度

极简集成 xxl-job,支持分布式任务调度功能

  • 分布事务处理

集成 Seata,支持分布式事务,无代码侵入,灵活便捷

  • 分布对象存储

支持 Minio 分布式对象存储。同时,集成阿里云OSS,可通过 @EnableXXX 注解开启或关闭功能。

  • 分布式工作流

Camunda 引擎为基础定义分布式工作流引擎,提供自研人事信息管理以及人事管理体系与工作流用户体系的实时集成

[4]、微服务运行监控

  • 服务调用链监控

集成 Skywalking 进行服务调用链的监控,调用链监控深度可延伸至Undertow、数据库、Redis

  • 应用吞吐量监控

集成 Skywalking 进行应用吞吐量监控

  • 熔断、降级监控

集成 Sentinel 进行服务的熔断、降级监控

  • 微服务状态监控

集成 Spring Boot Admin 进行服务运行状态的监控

[5]、数据自动化处理

  • 数据模型初始化

RBACOAuth2 部分核心表、Camunda 数据表,在初始部署过程中为自动化创建

  • 核心应用数据初始化

RBACOAuth2 等核心数据,在初始部署过程中为自动化导入

  • URL权限数据动态汇总

自动扫描URL接口作为权限汇总存入系统,根据URL相关信息生成唯一ID,多次导入数据不会重复。可通过配置动态开启或修改扫描内容

  • Yml配置自动导入

服务所需使用的配置文件,可自动根据文件夹进行分组并导入到 Nacos 中。

[6]、服务开发支撑

  • 通用CRUD封装

各种类型的代码生成器较多,结合实际应用使用效果来看,代码生成器在实际开发中使用频率低于理想预期。因此,没有考虑提供代码生成器,而是对常规的CRUD进行了多层次的封装,使定制化服务的开发更加便捷。

  • 自研两级缓存封装

自研基于 CaffeineRedis 分布式两级缓存,完美支持JPA Hibernate二级缓存,完美支持各类查询数据缓存以及JPA @ManyToMany, @ManyToOne等关联查询。实现基于CaffeineHibernate 二级缓存,可与自研两级缓存快速切换,仅使用本地缓存创建Key繁琐和分页数据无法更新的问题

  • 多类型数据库支持

默认采用 PostgreSQL 数据库,支持 MySQLOracleH2等多种关系型数据库,无须修改代码可动态切换。数据层同时支持 Spring Data JpaMybatis Plus

  • 多消息队列支持

适配 RabbitMQKafka,默认使用 Kafka,支持消息总线(Spring Cloud Bus)

  • 多种服务调用方式

默认采用 OpenFeign 进行服务间调用,支持 RestTemplateOkHttps

  • 共享式多环境切换

共享式、统一化多环境配置模式,Yml、Docker均采用此方式配置,避免类似的服务配置、Dockerfile配置导出复制和修改的问题

  • 多团队开发管理

支持多团队开发,可针对各个团队开发服务,进行单独的授权配置。

  • 注解模型模块模式

除必要依赖逻辑以及强注入顺序要求的模块采用 Spring SPI(spring.factories)机制外,其它功能模块均采用 @EnableXXX 注解编程模型,可选择性进行控制是否开启对应模块,减少不必要的依赖注入和启动。

  • 代码打包记录查询

对代码编译信息进行记录,可查询代码版本以及编译时间等相关信息,方便运维人员更好的掌握代码信息。

  • 人事信息管理

除已有的用户体系外,集成单位、部门、人员等人事管理功能,满足大多数人事管理场景,并与 Camunda 工作流用户体系无缝整合,实现数据实时同步。

[7]、信息发送集成

  • 微信小程序订阅消息

支持微信小程序订阅消息发送。提供订阅消息模版工厂,可根据自身业务需求,编写少量代码既可以拓展支持新订阅消息模版。

  • 极光消息推送集成

集成极光消息推送,对极光后台API进行封装,封装度高、调用方便,可快速与自定义业务需求整合,通过 @EnableXXX 注解开启或关闭。

  • 环信消息集成

集成环信IM和消息推送,使用更加便捷,可在应用中根据自定义需求快速整合和拓展IM,发送手机推送消息。通过 @EnableXXX 注解开启或关闭。

  • 多通道SMS集成

集成阿里、百度、中国移动、华为、京东、极光、网易、七牛、腾讯、又拍、云片等平台短信发送通道。可通过配置动态选择具体使用通道。支持多模版定义以及模版参数顺序控制

[8]、内容审核集成

  • 阿里云内容审核

集成阿里云内容审核,支持文本、图片、音频、视频、网页内容审核,支持同步审核、异步审核、异步 Callback 方式审核通过 @EnableXXX 注解开启或关闭。

  • 微信小程序内容审核

集成微信小程序内容审核,支持文本、图片、音频内容审核,支持同步、异步审核。通过 @EnableXXX 注解开启或关闭。

  • 百度证照识别

集成百度证照审核,支持营业执照、身份证 OCR 识别。通过 @EnableXXX 注解开启或关闭。

  • 天眼查企业信息查询

集成天眼查企业信息查询。通过 @EnableXXX 注解开启或关闭。

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git a/documents/guides/index.html b/documents/guides/index.html index f316edc66..1c75d107e 100644 --- a/documents/guides/index.html +++ b/documents/guides/index.html @@ -5,11 +5,11 @@ Eurynome Cloud - +
Eurynome Cloud

Eurynome Cloud

简洁优雅 · 稳定高效 | 宁静致远 · 精益求精

快速上手 →

最新技术栈

使用最流行的技术Spring Boot、Spring Cloud、Spring Cloud Alibaba、Nacos、Sentinel、Skywalking、Vue、Vuetify。

功能全面

面向互联网和企业级应用设计,支持手机验证码、小程序、第三方应用登录、证照审核、内容审核、企业人事管理等诸多功能。

双版本支持

提供与微服务版本技术体系一致的单体版架构,无须复杂的微服务基础设施,即可快速搭建基于OAuth2的、前后端分离的应用。

便捷配置

共享式、综合性多环境配置,统一化配置参数设定,简化配置参数修改数量,降低修改配置出错率,提升维护便捷性。

特有功能

高度灵活的动态权限配置,无须配置@PreAuthorize注解、使用antMatchers等方式,完全通过配置实现方法级权限控制。

整洁规范

代码整洁规范易于阅读,完全遵照Spring Boot编程思想,注解丰富、配置灵活、策略驱动

- + diff --git a/documents/guides/microservices/index.html b/documents/guides/microservices/index.html index e75288163..4f4696865 100644 --- a/documents/guides/microservices/index.html +++ b/documents/guides/microservices/index.html @@ -5,11 +5,11 @@ 介绍 | Eurynome Cloud - + - + diff --git "a/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\346\212\200\346\234\257.html" "b/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\346\212\200\346\234\257.html" index 03ff61e83..0a2f3ab2c 100644 --- "a/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\346\212\200\346\234\257.html" +++ "b/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\346\212\200\346\234\257.html" @@ -5,11 +5,11 @@ 容器化技术 | Eurynome Cloud - +

容器化技术

Docker能解决什么问题?

Docker Logo

Docker是一个容器化工具,那么什么是容器呢,Docker和容器有什么关系,Docker又能解决什么问题呢?

麻烦的环境配置

软件开发最大的麻烦事之一就是环境配置,在开发之前我们需要准备各种运行环境、IDE、辅助工具。就像我们要使用电脑前,先要安装操作系统一样。

而一个可用软件的交付过程通常包含两个部分 - 开发和维护。不幸的是,我们很难保证软件开发测试和运行维护阶段的软件能运行在一模一样的环境下。开发常说:"It works on my machine",很多时候我们都要花大量的时间去配置环境和教别人配置环境。

现在的应用程序

applications.jpg

以前的应用程序:

  • 几乎都是单块应用: 大系统, 多模块
  • 紧耦合: 内部调用
  • 不常变更: 需求稳定(改动成本高)

如今的应用程序:

  • 解耦: 微服务/异步
  • 经常变更: 快速迭代
  • 动态创建和部署: 服务化

新架构的挑战

  • 多样化的技术栈
  • 需要动态创建机器
  • 很多活动组件
  • 运维人员需要管理复杂的架构

复杂的架构

在新的应用程序架构下,我们部署应用的成本大大增加。不但要搭建不同语言、不同技术栈适配的运行环境,还要部署到多个服务器主机上;并且这些主机还可能来自不同地方(公/私有云主机、物理主机)。

统一的管理

其实在软件开发的过程中我们就思考过类似的问题 - 如何统一的管理我们的代码包。例如,Maven、Gradle、NPM,我们使用一个相同的格式(规范)将我们的代码划分成模块,并使用一套工具去管理他们。在此之后我们不需要重复的copy代码、复制文件,只需要声明式的引入我们需要的代码包就可以了。

当然,我们希望我们的应用部署也能如此简单。

“容器”

good-container.png

app-container.png

“容器”是一个黑盒,对于它的使用者来说:

  • 无需关心里面有什么:只关注“容器”能做什么
  • 有一套工具来管理黑盒:打包、运输、运行
  • 减少了部署单元的数量,从而减少了花销:多个工具聚集在一个“容器”内
  • 更容易管理多个环境:以“容器”为单位进行部署和管理

虚拟化技术

(1) 虚拟机:精心配置的虚拟机也是满足我们(基本)要求的容器,我们能够通过虚拟机镜像来打包我们的应用。但是,庞大的操作系统占用了大量的系统资源,使运行成本大大上升。

vm.png

虚拟机

  • 应用
    • 运行环境(Java/数据库/libs...)
    • 客户机操作系统(Guest Operating System)
    • 虚拟机管理系统(Hypervisor)
    • 操作系统级:MacOS(HyperKit),Windows的Hyper-V
    • 应用软件级:VirtualBox,VMWare Workstation
  • 主操作系统(Host Operating System)
  • 硬件(Infrastructure)/云主机

(2) 容器:(作为进程)共用内核并提供额外的隔离手段,避免虚拟的操作系统占用。

container.png

容器

  • 应用
  • 运行环境(Java/数据库/libs...)
  • Docker守护进程(Docker Daemon): 类似虚拟机管理系统
  • 主操作系统(Host Operating System)
  • 硬件(Infrastructure)/云主机

容器技术

容器技术已经发展了一段时间了, 例如, LXC, BSD Jails, Solaris Zones...

history.png

容器技术特点

  • 看起来像虚拟机
    • 可以SSH到容器
    • 具有root的访问权限
    • 可以安装包
    • 可以mount文件系统
    • 拥有自己的eth0接口
    • 可以修改iptables 规则和routing table
  • 共享宿主机的内核
  • 隔离 cgroups (memory, cpu, blkio)
  • 拥有进程空间 (pid, mnt, net, ipc, uts)
    • pid - 隔离进程PID
    • mnt - 允许创建不同的文件系统层级
    • net - 隔离网络控制、iptables、防火墙、路由
    • ipc - 定义内部进程交流的范围
    • uts - 允许修改hostname :::

容器技术的局限

  • 容器没有标准的格式
  • 所以容器是不可移植的
  • 没有标准的工具,所以比如要自己管理网络
  • 没有可重用的模块和API

Docker

what-is-docker.png

  • 使容器变得更容易使用
  • 容器镜像的商品化
  • 可插拔的模块易于吸引供应商加入
  • 适当的API可用来创建高层次抽象的工具
  • 和微服务诞生在同一个时代

Docker架构

docker-architecture.png

  • Docker Client:接收命令和Docker Host进行交互的客户端
  • Docker Host:运行Docker服务的主机
    • Docker Daemon:守护进程,用于管理所有镜像和容器
    • Docker Images/Containers:镜像和容器实例
  • Registry(Hub):镜像仓库

docker-architecture2.png

Docker底层实现

docker-tech.png

底层实现原理详解见open in new window

Docker核心技术

core-tech.png

  • Namespace 命名空间 Linux 的命名空间机制提供了以下七种不同的命名空间,包括 CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER、CLONE_NEWUTS,通过这七个选项我们能在创建新的进程时设置新进程应该在哪些资源上与宿主机器进行隔离。因此容器只能感知内部的进程,而对宿主机和其他容器一无所知。
  • CGroups (Control Groups) Linux 的 CGroup 能够为一组进程分配资源,也就是我们在上面提到的 CPU、内存、网络带宽等资源.
  • UnionFS union-fs.png

Docker中的每一个镜像都是由一系列的只读层组成的,Dockerfile 中的每一个命令都会在已有的只读层上创建一个新的层。通过 docker run 命令可以在镜像的最上层添加一个可写的层 - 容器层,所有对于运行时容器的修改其实都是对这个容器读写层的修改。

容器和镜像的区别就在于,所有的镜像都是只读的,而每一个容器其实等于镜像加上一个可读写的层,也就是同一个镜像可以对应多个容器。同时已构建的每一层镜像也可以作为其他镜像的基础层进行共用。

Docker VS VM

docker-vs-vm.png

更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
- + diff --git "a/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\351\203\250\347\275\262.html" "b/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\351\203\250\347\275\262.html" index 05197eeda..2ec9688a8 100644 --- "a/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\351\203\250\347\275\262.html" +++ "b/documents/guides/microservices/\345\256\271\345\231\250\345\214\226\351\203\250\347\275\262.html" @@ -5,7 +5,7 @@ 容器化部署 | Eurynome Cloud - + @@ -38,6 +38,6 @@
1
  1. 如果是以Docker的方式运行服务,传统的方式就需要把skywalking-agent.jar一并打入到服务的docker中。

由于Docker-compose打包上下文的问题,就需要在每一个模块中都复制一份skywalking-agent.jar。很不好管理,看着也不舒服。

[2]、Dockerfile的编写和放置问题

常规Java微服务的Docker打包方式,要么采用Maven Plugin的方式,要么采用docker-compose的方式。不管哪一种方式,都需要在该服务代码所在目录下新建一个Dockerfile文件。

一方面,每个服务下的Dockerfile文件中的配置信息,除了服务的JAR包名不同以外,其余的所有配置都相同,就是一种重复劳动。 另一方面,如果要增加Skywalking,那么需要在每一个服务所在目录下都拷贝一份skywalking-agent.jar。不仅重复工作,代码结构也不美观整洁。

Eurynome Cloud Docker 打包的设计

为了解决上述两方面问题,Eurynome Cloud 在所有模块之外之指定了一个统一的目录,将需要打包的jar以及dockerfile全部放入该目录,通过该目录形成一个统一的上下文环境。在Eurynome Cloud工程中,${project_home}/configurations/docker/context就是这个上下文环境。

在这个上下文环境中,除了包含通用的Dockerfile、Skywalking Agent以外,在使用Maven进行编译的过程中,还会将所有需要打包服务的对应的jar包拷贝到${project_home}/configurations/docker/context/target目录下。这样打包的所有资源就都已经具备,同时还解决了上述两个问题。

提示

可以通过修改${project_home}/pom.xml 中的<docker.build.directory>值,来改变拷贝jar包的目录

Eurynome Cloud Docker 打包使用方法

[1]、修改信息

由于使用了一个统一的Dockerfile来解决重复定义Docker打包配置文件的问题,想要实现使用一个Dockerfile打出不同的Docker,那么就需要通过传参的方式来改变Dockerfile中的值。

这里采用的是环境变量的方式,在${project_home}/configurations/docker/docker-compose/.env文件中定义这些参数。其中包含版本号以及具体服务对应的包名。所以如果有新增服务或者想要指定版本号,首先就需要修改这个配置文件。

[2]、执行命令

执行打包命令

docker-compose -f ${project home}/configurations/docker/docker-compose/herodotus/services.dev.yml --env-file=${project_home}/configurations/docker/docker-compose/herodotus/.env up -d
 
1

或者

docker-compose -f ${project home}/configurations/docker/docker-compose/herodotus/services.prod.yml --env-file=${project_home}/configurations/docker/docker-compose/herodotus/.env up -d
 
1

说明

上文说到想要以Docker的方式运行服务并且关联Skywalking,就需要在打包时将Skywalking Agent打入到Docker中。但实际应用中并不是所有环境都需要使用Skywalking,比如:在生产环境需要使用Skywalking,在开发环境中并不需要Skywalking以降低资源消耗。

因此,Eurynome Cloud 提供了两种打包配置

使用${project home}/configurations/docker/docker-compose/herodotus/services.dev.yml这个Docker-compose配置文件打包时,对应的Dockerfile文件是${project home}/configurations/docker/context/development/Dockerfile。这个Dockerfile配置中,没有包含Skywalking Agent的拷贝命令。

使用${project home}/configurations/docker/docker-compose/herodotus/services.prod.yml这个Docker-compose配置文件打包时,对应的Dockerfile文件是${project home}/configurations/docker/context/production/Dockerfile。这个Dockerfile配置中,包含了Skywalking Agent的拷贝命令。

这样通过不同的命令,实现了对不同Docker环境需求的支持。

更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- + diff --git a/documents/guides/others/index.html b/documents/guides/others/index.html index 94a939197..be4f69a58 100644 --- a/documents/guides/others/index.html +++ b/documents/guides/others/index.html @@ -5,11 +5,11 @@ 常见问题 | Eurynome Cloud - + -

常见问题

Redis

[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问

  • Windows

找到redis.windows.conf配置文件

1、将protected-mode 参数改为no。

2、注释掉bind 127.0.0.1

3、重启redis服务

Redis 密码

  • Linux

1、linux对应的是redis.conf文件

2、 修改还是和windows一样

3、 修改完成重启服务

[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required

出现该错误,是由于Redis中设置密码,而代码中未读到Redis密码或配置文件中没有配置密码导致的。

  • 解决办法
  1. 首先用Redis客户端,比如:redis-desktop-manager,进行Redis的连接测试。如果无法连接,那么请检查密码输入是否正确、本地网络等相关环境;如果可以正常连接,请进行下一步。
  2. 检查Nacos中,Redis相关配置是否配置了密码。一定要注意格式,检查格式缩进是否正确、yaml配置“:”后面是否空了一格。如果确定配置正确,请进行下一步。
  3. 检查服务是否可以正常访问到Nacos服务器,是否可以正确读取Nacos中配置。

以上操作均确保无误应该就可以正常使用了,如果还有问题,那么就请尽可能的准备详尽的信息,在Gitee中提Issueopen in new window

[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>

使用spring boot data redis 链接redis sentinel集群,会报此错。

原因是因为redis sentinel集群的sentinel配置文件没有配置密码,sentinel配置密码的方式和redis的密码配置方式一样,配置文件中加上requirepass <密码> 就行。

另外,sentinel中的sentinel auth-pass <master> <pass> 不是给sentinel配置密码,而是sentinel链接redis master的密码

更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
- +

常见问题

Redis

[1]、本地Redis使用127.0.0.1可以访问,使用IP地址无法访问

  • Windows

找到redis.windows.conf配置文件

1、将protected-mode 参数改为no。

2、注释掉bind 127.0.0.1

3、重启redis服务

Redis 密码

  • Linux

1、linux对应的是redis.conf文件

2、 修改还是和windows一样

3、 修改完成重启服务

[2]、io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required

出现该错误,是由于Redis中设置密码,而代码中未读到Redis密码或配置文件中没有配置密码导致的。

  • 解决办法
  1. 首先用Redis客户端,比如:redis-desktop-manager,进行Redis的连接测试。如果无法连接,那么请检查密码输入是否正确、本地网络等相关环境;如果可以正常连接,请进行下一步。
  2. 检查Nacos中,Redis相关配置是否配置了密码。一定要注意格式,检查格式缩进是否正确、yaml配置“:”后面是否空了一格。如果确定配置正确,请进行下一步。
  3. 检查服务是否可以正常访问到Nacos服务器,是否可以正确读取Nacos中配置。

以上操作均确保无误应该就可以正常使用了,如果还有问题,那么就请尽可能的准备详尽的信息,在Gitee中提Issueopen in new window

[3]、NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user>

使用spring boot data redis 链接redis sentinel集群,会报此错。

原因是因为redis sentinel集群的sentinel配置文件没有配置密码,sentinel配置密码的方式和redis的密码配置方式一样,配置文件中加上requirepass <密码> 就行。

另外,sentinel中的sentinel auth-pass <master> <pass> 不是给sentinel配置密码,而是sentinel链接redis master的密码

Nacos

[1]、failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00

将Nacos日志设置到Debug级别,在服务运行起来之后,就会发现控制台持续输出以上Debug信息。

这不是代码Bug,而是Nacos自身机制

这是Nacos Client本地缓存及故障转移机制。

在Nacos源代码中,ServiceInfoHolder的构造方法中,会初始化一个FailoverReactor类。FailoverReactor的作用便是用来处理故障转移的。

FailoverReactor的构造方法会拼接故障根目录:${user.home}/nacos/naming/public/failover,其中public也有可能是其他的自定义命名空间;

主要逻辑就是:

  • 基本操作就是读取failover目录,查找故障转移【开关】文件为名为“failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00”。
  • 如果故障转移文件不存在,则直接返回,不断输出Debug信息。
  • 如果故障转移文件存在,比较文件修改时间,如果已经修改,则获取故障转移文件中的内容。
  • 故障转移文件中存储了0和1标识。0表示关闭,1表示开启。
  • 当为开启状态时,执行线程FailoverFileReader。

解决办法

  1. 将Nacos日志级别调整为INFO级别以上。
  2. 手动在${user.home}/nacos/naming/public目录下,新建文件failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00
更新时间: 2021/9/7 下午2:44:55
贡献者: herodotus
+ diff --git "a/documents/guides/others/\346\233\264\346\226\260\346\227\245\345\277\227.html" "b/documents/guides/others/\346\233\264\346\226\260\346\227\245\345\277\227.html" index 11979a34d..69081478d 100644 --- "a/documents/guides/others/\346\233\264\346\226\260\346\227\245\345\277\227.html" +++ "b/documents/guides/others/\346\233\264\346\226\260\346\227\245\345\277\227.html" @@ -5,11 +5,11 @@ 更新日志 | Eurynome Cloud - + -

更新日志

v2.5.4.110

  1. 重新构建项目文档体系,使用纯静态页面,替代已有 Gitee Wiki 文档。优化文档结构,提升文档阅读体验。提供全文搜索,便于文档查阅。支持文档独立部署,方便使用者搭建独立的文档服务查阅。
  2. 更换Nacos导入包,解决上一版本导入包导入重复问题
  3. Update Readme

v2.5.4.100

  1. 重新梳理所有Nacos配置,提取共性配置至统一配置文件,优化配置属性结构和归类,便于参数修改,降低维护复杂度
  2. 重构数据库相关Nacos配置,优化Maven、Nacos多环境配置与数据库切换的联动性,让数据库切换所需修改的参数更少,切换更顺滑
  3. 解决eurynome-cloud-management编译出现的Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on 4. project XXXX: Input length = 1 -> [Help 1]错误
  4. 解决Redis设置密码后,无法连接出现 NOAUTH Authentication required 错误
  5. 增加MySQL数据库默认数据初始化脚本
  6. 增加最新版Nacos配置导入包
  7. 修复前端UI申请APPKEY页面错误
  8. 修复前端UI切换至单体版后,连接错误问题。
  9. 升级前端UI依赖包版本。
  10. 同步更新相关文档,补充新建子模块、常见问题等部分文档。

v2.5.4.90

  1. 使用Mybatis Plus全面替换已有Mybatis,与Spring Boot Data JPA共存且支持同时使用。使用任何技术都可以无障碍的进行业务代码编写。
  2. 整合Mybatis Plus和Spring Boot Data JPA更换数据库配置属性,一处修改即可以同时修改Mybatis Plus和Spring Boot Data JPA使用数据库类型。
  3. 新增接口XSS脚本攻击过滤机制,同时支持请求参数和JSON请求体过滤。采用Ebay XSS过滤模型,进一步提升防控能力。
  4. 新增SQL 注入攻击防控机制。
  5. 解决eurynome-cloud-gateway和eurynome-cloud-management服务启动调用Kafka问题。
  6. 解决CacheConfigException错误问题,在错误体系中增加配置参数不合理提醒,让信息反馈更加友好。
  7. 解决Spring Boot Admin 不支持Java 8 时间类型问题。
  8. 解决Spring Boot Admin 不显示 Git Properties 信息问题。
  9. 解决修改Redis密码配置生效问题
  10. 梳理dependencies依赖包,对已有依赖进行进行更合理的分类,更加便于依赖包的找寻和维护。
  11. 升级依赖包版本
    • spring-boot-admin 升级至 2.5.1
    • git-commit-id-plugin 升级至 4.9.10
    • docker-maven-plugin 升级至 0.37.0
    • hutool 升级至 5.7.10
    • okhttps 升级至 3.1.4
    • JustAuth 升级至1.16.3
    • aliyun-java-sdk-core 升级至 4.5.25
    • baiducloud-java-sdk 升级至 0.10.175
    • aliyun-java-sdk-oss 升级至 3.13.1
    • cn.jpush.api 升级至 3.5.2
  12. 规范项目文档,增加系统部署、数据库切换等多部分内容
  13. 增加Nacos配置导入包,在没有自动部署功能支持的情况下,也可以更加方便的导入配置。
  14. 替换 UI SweetAlert 过期方法,解决弹出框不会关闭问题
  15. 解决授权码模式(authorization code)验证码被拦截问题

v2.5.4.80

  • 合并eurynome-cloud-curd包和eurynome-cloud-rest包,减少包数量,提升代码维护便捷度。
  • 增加接口幂等处理机制,防止重复提交。增加接口防刷限制机制,防止接口恶意频繁刷新。
  • 接口幂等和防刷机制,均支持全局配置控制,同时提供@Idempotent和@AccessLimited注解进行灵活的、个性化的配置。
  • 接口幂等和防刷机制,缓存标记采用分布式多级缓存进行存储,将低单一访问Redis带来的访问压力,同时支持多实例数据多级缓存本地数据同步。
  • 接口幂等和防刷机制,所涉及标记缓存时间配置全部统一支持Duration时间格式,简化配置参数,提升配置便捷度。同时,优化平台错误响应体系,返回更加友好的错误信息提示。
  • 定义Stamp签章体系,采用统一体系,对SMS短信验证码、JustAuth State、环信Token以及接口幂等和防刷等需临时存储标记相关应用进行统一实现。同时,采用分布式多级缓存进行数据存储,降低单一访问Redis压力。

v2.5.4.65

  • 优化Skywalking打包内容,直接使用Skywalking官方容器
  • 补充RequestMappingScanner对应事件代码,解决单体版扫描Rest API接口后不会存储问题
  • 优化数据库脚本以及数据库表结构和默认数据自动初始化机制。解决在第一次运行时,Spring Data JPA JDBC初始化机制与Hibernate 初始化机制冲突问题。
  • 在Gitee Wiki中,增加数据库初始化说明文档
  • 删除部分预留代码,减少暂时不必要的代码对使用者带来的误导。
  • 前端UI中,增加部分配置,使用者可以通过注释部分配置,让前端UI快速支持单体版。

v2.5.4.60

  • Spring Boot 版本升级至 2.5.4
  • Skywalking 版本升级至 8.7.0
  • 微服务日志输出至日志中心格式。
  • 增加Swagger注入条件注解,优化日志中心相关配置采用统一常量控制
  • 增加自定义Property"助手"数据统一自动编译生成配置,无须额外设置,在IDE中编辑配置属性时可自动弹出提示
  • 修复Kafka配置不生效问题。
  • 解决单体版自动启动Kafka问题。
  • 暂时关闭单体版Swagger,规避Swagger会自动启动Kafka问题。

v2.5.4.55

  • 整合代码,将constant包代码整合至common包中。删除constant包。
  • 完善Rest接口校验机制,以及相关自定义错误码
  • 统一spring boot validation错误信息,将其整合至平台统一响应实体Result中。无须在各个Rest接口中,添加BindingResult参数。

v2.5.4.50

  • 优化服务本地权限存储逻辑,解决权限属性数据重复存储,不会替换问题。
  • 重新梳理Spring Security OAuth2 方法级表达式动态权限鉴权逻辑,摒弃无用的权限验证Voter逻辑,使用统一逻辑实现@PreAuthorize注解权限的全面动态可配置化。统一平台接口- 白名单,IP地址白名单,以及Scope绑定URL的管理。
  • 重构UserDetails用户信息组织逻辑,使用Spring Security标准代码,替换自定义逻辑代码,降低代码冗余,与自研方法级动态权限完美融合。
  • 优化平台权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及分布式各服- 务多实例等各种应用场景。
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 清理系统无用代码。
  • 增加方法级动态权限演示动图,更新Readme

v2.5.4.40

  • 优化自定义多级缓存,实现可以统一设置allowNullValues值,并解决存储空值时卡死问题。
  • 重新梳理、优化系统权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及- - 分布式各服务多实例等各种应用场景。
  • 增加Kafka条件注入配置,将条件转换为@ConditionalOnXXX,方便管理和维护。避免单体版应用相关依赖过度依赖Kafka而导致的无法启动
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 去除传统Kafka Producer 通用类,改为统一使用 Spring Cloud Bus

v2.5.4.30

  • 重新调整Property配置,规范Property定义。修改相关配置
  • 调整包,以及包相关依赖关系。让包之间的依赖更加合理
  • 增加Kafka配置,增加@KafkaListener动态控制,以避免在不需要的情况下Kafka的自动开启。
  • 调整部分常理代码位置,常量代码基本调整完成
  • 将原有自定义条件,转换为@ConditionalOnXXX注解,让使用更加便捷
  • 日志中心是否开启状态,改为@ConditionalOnLogCenterEnabled注解

v2.5.4.20

  • 本地权限缓存更换为JetCache,为服务多实例的权限扫描和存储提供更好的支持
  • 将数据访问策略从Conditional类,升级为Conditional注解,使用更加便捷
  • 调整包依赖关系,新建assistant、constant包,删除message包。
  • 逐步将平台中各类非独有常量移入constant包方便管理和修改
  • 采用Spring Boot Event和Spring Cloud Bus Event 机制重构接口收集逻辑。支持单体架构、UPMS、分布式多实例等不同场景接口扫描的特殊需求
  • 优化Docker Compose配置,使用Debezium Kafka 替换已有kafka,以支持Debezium应用
  • 删除无用代码

v2.5.4.10

  • 全网首个实现Spring Security 动态URL权限与注解表达式权限有机整合,并且可以动态配置的微服务框架。
  • 全面支持方法级权限控制,Security OAuth2 permitAll等方法权限以及@PreAuthorize注解权限,均支持动态配置。目前支持以下权限的动态配置: · hasRole · hasAnyRole · hasAuthority · hasAnyAuthority · hasIpAddress · #oauth2.clientHasRole · #oauth2.clientHasAnyRole · #oauth2.hasScope · #oauth2.hasAnyScope · #oauth2.hasScopeMatching · #oauth2.hasAnyScopeMatching · #oauth2.denyOAuthClient · #oauth2.isOAuth · #oauth2.isUser · #oauth2.isClient
  • 彻底解决使用withObjectPostProcessor方式,会覆盖外部匹配规则问题。
  • 真正实现Scope权限与URL权限的关联与管控,拓展OAuth2默认只进行Scope简单对比的实现逻辑。
  • 实现动态权限配置的多服务同步。
  • 暂时去除JetCache,全面使用自研支持Hibernate二级缓存的多级缓存。
  • 修改配置文件配置
  • 删除无用代码

v2.5.3.60

  • Nacos版本升级至2.0.3
  • Hutool版本升级至5.7.6
  • 修改部分代码名称
  • 修改配置文件配置参数

v2.5.3.50

  • 将所有服务包括UAA的权限存储,改为本地和认证中心,多级分布式存储和验证。
  • 增加策略模式,支持认证中心权限数据直连和远程消息两种存储方式动态切换。
  • 改进自研多级缓存,解决Hibernate二级缓存进行数据缓存时产生的事务锁问题。
  • 删除无用代码
  • 为动态Scope权限做铺垫。
  • 全面支持方法级权限控制。

v2.5.3.40

  • Spring Boot 版本升级至 2.5.3
  • 采用新的Hash算法,缩短权限标识;简化用户权限信息,以缩短平台生成JWT Token的长度
  • git commit 插件由pl.project13.maven » git-commit-id-plugin改为io.github.git-commit-id » git-commit-id-maven-plugin。
  • git commit 插件升级至 5.0.0 版本

v2.5.3.30

  • 重构用户中心用户人员体系,将平台用户、第三方社交登录用户、人事管理用户以及Camunda工作流用户体系无缝融合。
  • 人事管理体系人员唯一化管理,同时支持企业、党组、团青等多种类型的机构类型,便于企业人事管理。
  • 基于Debezium实现数据库变更数据捕获,实现人事管理信息与Camunda工作流用户实时同步。
  • 树形结构通用代码实现逻辑与Hutool Tree一致,因此采用Hutool Tree 全面替换已有的Tree代码。
  • 删除不再使用的通用类代码。
  • 修改说明文档

v2.5.3.10

  • 自研基于Caffeine和Redis分布式两级缓存
  • 完美支持JPA Hibernate二级缓存
  • 完美支持各类查询数据缓存以及JPA @ManyToMany, @ManyToOne等关联查询。
  • 实现基于Caffeine的Hibernate二级缓存,可与自研两级缓存快速切换,仅使用本地缓存。
  • 极大的简化了原有自研的基于JetCache的缓存使用方式。
  • 保留JetCache,可根据实际使用需要使用。
  • 已有服务接口相关代码,均已更新自研分布式两级缓存模式。

2.5.2.40

  • Redis Value 默认序列化工具修改为Jackson2JsonRedisSerializer
  • jetcache valueEncoder 和 valueDecoder 修改为kryo
  • 部分代码的日志改为传统方式,不再使用@Slf4j注解
  • 抽象实体共性属性,拓展基础实体,以支持JPA视图类的ORM映射。
  • 重构基础Service,将基础Service的读操作与其它操作分离,以支持“视图”相关Service的编写。
  • 重构基础Controller,将基础Controller的读操作与其它操作分离,以支持“视图”相关Controller的编写。
  • 将Hibernate Validator替换为spring-boot-starter-validation
  • 删除JPA过期方法封装

v2.5.2.30

  • Spring Boot 版本升级至2.5.2
  • Spring Boot Admin 版本升级至2.4.2
  • 升级其它相关依赖版本

v2.5.2.25

  • Skywalking升级至8.6.0

v2.5.2.20

  • Spring Boot 升级至2.5.1
  • Camunda 升级至7.15.0
  • 其它依赖包版本升级
  • Swagger回滚至2.9.2,解决Swagger接口测试相关问题以及Knife4 Authorize不显示问题
  • 结构性调整平台相关配置属性

v2.5.1.0

  • Spring Boot 大版本升级至2.5.0

v2.4.5.60

  • 修改负载均衡不生效问题
  • 调整包依赖关系
  • 升级版本

v2.4.5.48

  • 正式发布开源版本
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
- +

更新日志

v2.5.4.120

  1. 使用Springdoc全面替换Springfox,配置更灵活、配置更多样
  2. Swagger文档注解全面升级为支持OpenAPI
  3. 使用Springdoc重构文档聚合功能,支持聚合查阅和服务独立查阅。Knife4j同步升级至3.0.3版本。
  4. Swagger文档默认支持OAuth2 Password、Authorization Code 两种认证流程
  5. 整合Camunda Engine Rest 与Swagger,实现Camunda API接口文档查阅,支持聚合查阅。
  6. 修复Bpmn服务默认启动Tomcat问题。
  7. 升级前端依赖包版本
  8. 更新Nacos配置文件及导入包
  9. 更新在线文档

v2.5.4.110

  1. 重新构建项目文档体系,使用纯静态页面,替代已有 Gitee Wiki 文档。优化文档结构,提升文档阅读体验。提供全文搜索,便于文档查阅。支持文档独立部署,方便使用者搭建独立的文档服务查阅。
  2. 更换Nacos导入包,解决上一版本导入包导入重复问题
  3. Update Readme

v2.5.4.100

  1. 重新梳理所有Nacos配置,提取共性配置至统一配置文件,优化配置属性结构和归类,便于参数修改,降低维护复杂度
  2. 重构数据库相关Nacos配置,优化Maven、Nacos多环境配置与数据库切换的联动性,让数据库切换所需修改的参数更少,切换更顺滑
  3. 解决eurynome-cloud-management编译出现的Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on 4. project XXXX: Input length = 1 -> [Help 1]错误
  4. 解决Redis设置密码后,无法连接出现 NOAUTH Authentication required 错误
  5. 增加MySQL数据库默认数据初始化脚本
  6. 增加最新版Nacos配置导入包
  7. 修复前端UI申请APPKEY页面错误
  8. 修复前端UI切换至单体版后,连接错误问题。
  9. 升级前端UI依赖包版本。
  10. 同步更新相关文档,补充新建子模块、常见问题等部分文档。

v2.5.4.90

  1. 使用Mybatis Plus全面替换已有Mybatis,与Spring Boot Data JPA共存且支持同时使用。使用任何技术都可以无障碍的进行业务代码编写。
  2. 整合Mybatis Plus和Spring Boot Data JPA更换数据库配置属性,一处修改即可以同时修改Mybatis Plus和Spring Boot Data JPA使用数据库类型。
  3. 新增接口XSS脚本攻击过滤机制,同时支持请求参数和JSON请求体过滤。采用Ebay XSS过滤模型,进一步提升防控能力。
  4. 新增SQL 注入攻击防控机制。
  5. 解决eurynome-cloud-gateway和eurynome-cloud-management服务启动调用Kafka问题。
  6. 解决CacheConfigException错误问题,在错误体系中增加配置参数不合理提醒,让信息反馈更加友好。
  7. 解决Spring Boot Admin 不支持Java 8 时间类型问题。
  8. 解决Spring Boot Admin 不显示 Git Properties 信息问题。
  9. 解决修改Redis密码配置生效问题
  10. 梳理dependencies依赖包,对已有依赖进行进行更合理的分类,更加便于依赖包的找寻和维护。
  11. 升级依赖包版本
    • spring-boot-admin 升级至 2.5.1
    • git-commit-id-plugin 升级至 4.9.10
    • docker-maven-plugin 升级至 0.37.0
    • hutool 升级至 5.7.10
    • okhttps 升级至 3.1.4
    • JustAuth 升级至1.16.3
    • aliyun-java-sdk-core 升级至 4.5.25
    • baiducloud-java-sdk 升级至 0.10.175
    • aliyun-java-sdk-oss 升级至 3.13.1
    • cn.jpush.api 升级至 3.5.2
  12. 规范项目文档,增加系统部署、数据库切换等多部分内容
  13. 增加Nacos配置导入包,在没有自动部署功能支持的情况下,也可以更加方便的导入配置。
  14. 替换 UI SweetAlert 过期方法,解决弹出框不会关闭问题
  15. 解决授权码模式(authorization code)验证码被拦截问题

v2.5.4.80

  • 合并eurynome-cloud-curd包和eurynome-cloud-rest包,减少包数量,提升代码维护便捷度。
  • 增加接口幂等处理机制,防止重复提交。增加接口防刷限制机制,防止接口恶意频繁刷新。
  • 接口幂等和防刷机制,均支持全局配置控制,同时提供@Idempotent和@AccessLimited注解进行灵活的、个性化的配置。
  • 接口幂等和防刷机制,缓存标记采用分布式多级缓存进行存储,将低单一访问Redis带来的访问压力,同时支持多实例数据多级缓存本地数据同步。
  • 接口幂等和防刷机制,所涉及标记缓存时间配置全部统一支持Duration时间格式,简化配置参数,提升配置便捷度。同时,优化平台错误响应体系,返回更加友好的错误信息提示。
  • 定义Stamp签章体系,采用统一体系,对SMS短信验证码、JustAuth State、环信Token以及接口幂等和防刷等需临时存储标记相关应用进行统一实现。同时,采用分布式多级缓存进行数据存储,降低单一访问Redis压力。

v2.5.4.65

  • 优化Skywalking打包内容,直接使用Skywalking官方容器
  • 补充RequestMappingScanner对应事件代码,解决单体版扫描Rest API接口后不会存储问题
  • 优化数据库脚本以及数据库表结构和默认数据自动初始化机制。解决在第一次运行时,Spring Data JPA JDBC初始化机制与Hibernate 初始化机制冲突问题。
  • 在Gitee Wiki中,增加数据库初始化说明文档
  • 删除部分预留代码,减少暂时不必要的代码对使用者带来的误导。
  • 前端UI中,增加部分配置,使用者可以通过注释部分配置,让前端UI快速支持单体版。

v2.5.4.60

  • Spring Boot 版本升级至 2.5.4
  • Skywalking 版本升级至 8.7.0
  • 微服务日志输出至日志中心格式。
  • 增加Swagger注入条件注解,优化日志中心相关配置采用统一常量控制
  • 增加自定义Property"助手"数据统一自动编译生成配置,无须额外设置,在IDE中编辑配置属性时可自动弹出提示
  • 修复Kafka配置不生效问题。
  • 解决单体版自动启动Kafka问题。
  • 暂时关闭单体版Swagger,规避Swagger会自动启动Kafka问题。

v2.5.4.55

  • 整合代码,将constant包代码整合至common包中。删除constant包。
  • 完善Rest接口校验机制,以及相关自定义错误码
  • 统一spring boot validation错误信息,将其整合至平台统一响应实体Result中。无须在各个Rest接口中,添加BindingResult参数。

v2.5.4.50

  • 优化服务本地权限存储逻辑,解决权限属性数据重复存储,不会替换问题。
  • 重新梳理Spring Security OAuth2 方法级表达式动态权限鉴权逻辑,摒弃无用的权限验证Voter逻辑,使用统一逻辑实现@PreAuthorize注解权限的全面动态可配置化。统一平台接口- 白名单,IP地址白名单,以及Scope绑定URL的管理。
  • 重构UserDetails用户信息组织逻辑,使用Spring Security标准代码,替换自定义逻辑代码,降低代码冗余,与自研方法级动态权限完美融合。
  • 优化平台权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及分布式各服- 务多实例等各种应用场景。
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 清理系统无用代码。
  • 增加方法级动态权限演示动图,更新Readme

v2.5.4.40

  • 优化自定义多级缓存,实现可以统一设置allowNullValues值,并解决存储空值时卡死问题。
  • 重新梳理、优化系统权限从Controller扫描、汇总存储至服务器以及动态修改后最终回传同步至服务的整理逻辑以及事件流。完美支持单体式架构、UPMS自身应用需求、分布式架构以及- - 分布式各服务多实例等各种应用场景。
  • 增加Kafka条件注入配置,将条件转换为@ConditionalOnXXX,方便管理和维护。避免单体版应用相关依赖过度依赖Kafka而导致的无法启动
  • 修复部分已知BUG,将部分代码中日志由@Slf4j改回传统日志编写方式,一方面提高编译效率,另一方面解决源代码包查看时Idea提醒代码不一致问题。
  • 去除传统Kafka Producer 通用类,改为统一使用 Spring Cloud Bus

v2.5.4.30

  • 重新调整Property配置,规范Property定义。修改相关配置
  • 调整包,以及包相关依赖关系。让包之间的依赖更加合理
  • 增加Kafka配置,增加@KafkaListener动态控制,以避免在不需要的情况下Kafka的自动开启。
  • 调整部分常理代码位置,常量代码基本调整完成
  • 将原有自定义条件,转换为@ConditionalOnXXX注解,让使用更加便捷
  • 日志中心是否开启状态,改为@ConditionalOnLogCenterEnabled注解

v2.5.4.20

  • 本地权限缓存更换为JetCache,为服务多实例的权限扫描和存储提供更好的支持
  • 将数据访问策略从Conditional类,升级为Conditional注解,使用更加便捷
  • 调整包依赖关系,新建assistant、constant包,删除message包。
  • 逐步将平台中各类非独有常量移入constant包方便管理和修改
  • 采用Spring Boot Event和Spring Cloud Bus Event 机制重构接口收集逻辑。支持单体架构、UPMS、分布式多实例等不同场景接口扫描的特殊需求
  • 优化Docker Compose配置,使用Debezium Kafka 替换已有kafka,以支持Debezium应用
  • 删除无用代码

v2.5.4.10

  • 全网首个实现Spring Security 动态URL权限与注解表达式权限有机整合,并且可以动态配置的微服务框架。
  • 全面支持方法级权限控制,Security OAuth2 permitAll等方法权限以及@PreAuthorize注解权限,均支持动态配置。目前支持以下权限的动态配置: · hasRole · hasAnyRole · hasAuthority · hasAnyAuthority · hasIpAddress · #oauth2.clientHasRole · #oauth2.clientHasAnyRole · #oauth2.hasScope · #oauth2.hasAnyScope · #oauth2.hasScopeMatching · #oauth2.hasAnyScopeMatching · #oauth2.denyOAuthClient · #oauth2.isOAuth · #oauth2.isUser · #oauth2.isClient
  • 彻底解决使用withObjectPostProcessor方式,会覆盖外部匹配规则问题。
  • 真正实现Scope权限与URL权限的关联与管控,拓展OAuth2默认只进行Scope简单对比的实现逻辑。
  • 实现动态权限配置的多服务同步。
  • 暂时去除JetCache,全面使用自研支持Hibernate二级缓存的多级缓存。
  • 修改配置文件配置
  • 删除无用代码

v2.5.3.60

  • Nacos版本升级至2.0.3
  • Hutool版本升级至5.7.6
  • 修改部分代码名称
  • 修改配置文件配置参数

v2.5.3.50

  • 将所有服务包括UAA的权限存储,改为本地和认证中心,多级分布式存储和验证。
  • 增加策略模式,支持认证中心权限数据直连和远程消息两种存储方式动态切换。
  • 改进自研多级缓存,解决Hibernate二级缓存进行数据缓存时产生的事务锁问题。
  • 删除无用代码
  • 为动态Scope权限做铺垫。
  • 全面支持方法级权限控制。

v2.5.3.40

  • Spring Boot 版本升级至 2.5.3
  • 采用新的Hash算法,缩短权限标识;简化用户权限信息,以缩短平台生成JWT Token的长度
  • git commit 插件由pl.project13.maven » git-commit-id-plugin改为io.github.git-commit-id » git-commit-id-maven-plugin。
  • git commit 插件升级至 5.0.0 版本

v2.5.3.30

  • 重构用户中心用户人员体系,将平台用户、第三方社交登录用户、人事管理用户以及Camunda工作流用户体系无缝融合。
  • 人事管理体系人员唯一化管理,同时支持企业、党组、团青等多种类型的机构类型,便于企业人事管理。
  • 基于Debezium实现数据库变更数据捕获,实现人事管理信息与Camunda工作流用户实时同步。
  • 树形结构通用代码实现逻辑与Hutool Tree一致,因此采用Hutool Tree 全面替换已有的Tree代码。
  • 删除不再使用的通用类代码。
  • 修改说明文档

v2.5.3.10

  • 自研基于Caffeine和Redis分布式两级缓存
  • 完美支持JPA Hibernate二级缓存
  • 完美支持各类查询数据缓存以及JPA @ManyToMany, @ManyToOne等关联查询。
  • 实现基于Caffeine的Hibernate二级缓存,可与自研两级缓存快速切换,仅使用本地缓存。
  • 极大的简化了原有自研的基于JetCache的缓存使用方式。
  • 保留JetCache,可根据实际使用需要使用。
  • 已有服务接口相关代码,均已更新自研分布式两级缓存模式。

2.5.2.40

  • Redis Value 默认序列化工具修改为Jackson2JsonRedisSerializer
  • jetcache valueEncoder 和 valueDecoder 修改为kryo
  • 部分代码的日志改为传统方式,不再使用@Slf4j注解
  • 抽象实体共性属性,拓展基础实体,以支持JPA视图类的ORM映射。
  • 重构基础Service,将基础Service的读操作与其它操作分离,以支持“视图”相关Service的编写。
  • 重构基础Controller,将基础Controller的读操作与其它操作分离,以支持“视图”相关Controller的编写。
  • 将Hibernate Validator替换为spring-boot-starter-validation
  • 删除JPA过期方法封装

v2.5.2.30

  • Spring Boot 版本升级至2.5.2
  • Spring Boot Admin 版本升级至2.4.2
  • 升级其它相关依赖版本

v2.5.2.25

  • Skywalking升级至8.6.0

v2.5.2.20

  • Spring Boot 升级至2.5.1
  • Camunda 升级至7.15.0
  • 其它依赖包版本升级
  • Swagger回滚至2.9.2,解决Swagger接口测试相关问题以及Knife4 Authorize不显示问题
  • 结构性调整平台相关配置属性

v2.5.1.0

  • Spring Boot 大版本升级至2.5.0

v2.4.5.60

  • 修改负载均衡不生效问题
  • 调整包依赖关系
  • 升级版本

v2.4.5.48

  • 正式发布开源版本
更新时间: 2021/9/8 上午12:03:33
贡献者: herodotus
+ diff --git a/packages/eurynome-cloud-assistant/pom.xml b/packages/eurynome-cloud-assistant/pom.xml index e74f065d1..5fa96faa8 100644 --- a/packages/eurynome-cloud-assistant/pom.xml +++ b/packages/eurynome-cloud-assistant/pom.xml @@ -27,7 +27,7 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 4.0.0 diff --git a/packages/eurynome-cloud-common/pom.xml b/packages/eurynome-cloud-common/pom.xml index b3428a3e3..edb756860 100644 --- a/packages/eurynome-cloud-common/pom.xml +++ b/packages/eurynome-cloud-common/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-common - 2.5.4.110 + 2.5.4.120 jar 结对基础通用的工具类包,此包的定位是放在任何工程中都可以使用,而且尽可能依赖少的存在上下文组件 @@ -95,26 +95,8 @@ - io.springfox - springfox-swagger2 - - - io.swagger - swagger-annotations - - - io.swagger - swagger-models - - - - - io.swagger - swagger-annotations - - - io.swagger - swagger-models + org.springdoc + springdoc-openapi-common diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AccountType.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AccountType.java index 3d81a7fe2..a08d01c6f 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AccountType.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AccountType.java @@ -32,8 +32,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import me.zhyd.oauth.config.AuthDefaultSource; import java.util.ArrayList; @@ -45,7 +44,7 @@ * @author gengwei.zheng * 登录类型:password-密码、mobile-手机号、email-邮箱、weixin-微信、weibo-微博、qq-等等 */ -@ApiModel(description = "账号类型") +@Schema(name = "账号类型") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum AccountType { @@ -97,11 +96,11 @@ public enum AccountType { OKTA(AuthDefaultSource.OKTA.name(), AccountType.JUST_AUTH_HANDLER, "Okta"), PINTEREST(AuthDefaultSource.PINTEREST.name(), AccountType.JUST_AUTH_HANDLER, "Pinterest"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final String key; - @ApiModelProperty(value = "处理器") + @Schema(title = "处理器") private final String handler; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String description; private static final Map INDEX_MAP = new HashMap<>(); diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ApplicationType.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ApplicationType.java index 2323ea679..1a9dcee0b 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ApplicationType.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ApplicationType.java @@ -24,8 +24,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -38,7 +37,7 @@ * @author : gengwei.zheng * @date : 2020/5/4 12:01 */ -@ApiModel(description = "应用类型") +@Schema(name = "应用类型") public enum ApplicationType { /** @@ -50,9 +49,9 @@ public enum ApplicationType { WAP(3, "手机网页应用"), MINI(4, "小程序应用"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -78,7 +77,7 @@ public enum ApplicationType { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AuthorityType.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AuthorityType.java index 43e0f0c42..fb8981fda 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AuthorityType.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/AuthorityType.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -39,7 +38,7 @@ * @author : gengwei.zheng * @date : 2019/11/25 15:10 */ -@ApiModel(description = "权限类型") +@Schema(name = "权限类型") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum AuthorityType { @@ -51,9 +50,9 @@ public enum AuthorityType { PAGE(2, "Web Page"), MINI_PAGE(3, "小程序页面"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -79,7 +78,7 @@ public enum AuthorityType { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/OAuth2Expression.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/OAuth2Expression.java index fcf8374a7..603bd98d3 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/OAuth2Expression.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/OAuth2Expression.java @@ -23,7 +23,7 @@ package cn.herodotus.eurynome.common.constant.enums; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -37,7 +37,9 @@ * @date : 2021/8/14 6:50 */ public enum OAuth2Expression { - + /** + * 允许全部 + */ PERMIT_ALL(0, "permitAll"), ANONYMOUS(1, "anonymous"), REMEMBER_ME(2, "rememberMe"), @@ -69,9 +71,9 @@ public enum OAuth2Expression { private static final Map INDEX_MAP = new HashMap<>(); private static final List> TO_JSON_STRUCT = new ArrayList<>(); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final int index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String content; static { diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ResultStatus.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ResultStatus.java index 4dfbf10d9..a66f3c217 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ResultStatus.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/ResultStatus.java @@ -22,8 +22,7 @@ package cn.herodotus.eurynome.common.constant.enums; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; /** * 自定义返回码 @@ -44,7 +43,7 @@ * * @author gengwei.zheng */ -@ApiModel(description = "响应结果状态") +@Schema(name = "响应结果状态") public enum ResultStatus { /** @@ -152,9 +151,9 @@ public enum ResultStatus { GATEWAY_TIMEOUT(5004, "Gateway Timeout"), SERVICE_UNAVAILABLE(5003, "Service Unavailable"); - @ApiModelProperty(value = "结果代码") + @Schema(title = "结果代码") private final int code; - @ApiModelProperty(value = "结果信息") + @Schema(title = "结果信息") private final String message; diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/StatusEnum.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/StatusEnum.java index cad1acabd..2fc224299 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/StatusEnum.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/enums/StatusEnum.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -36,18 +35,30 @@ /** * @author gengwei.zheng */ -@ApiModel(value = "数据状态") +@Schema(name = "ResultStatus", title = "响应结果状态", description = "自定义错误码以及对应的、友好的错误信息") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum StatusEnum { + /** + * 禁用 + */ FORBIDDEN(0, "禁用"), + /** + * 启用 + */ ENABLE(1, "启用"), + /** + * 锁定 + */ LOCKING(2, "锁定"), + /** + * 过期 + */ EXPIRED(3, "过期"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -73,7 +84,7 @@ public enum StatusEnum { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/magic/SecurityConstants.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/magic/SecurityConstants.java index 88541a82f..6e4512a9f 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/magic/SecurityConstants.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/constant/magic/SecurityConstants.java @@ -38,6 +38,8 @@ public class SecurityConstants { public static final String ENDPOINT_OAUTH_IDENTITY_PROFILE = "/identity/profile"; + public static final String OPEN_API_SECURITY_SCHEME_BEARER_NAME = "HERODOTUS_AUTH"; + /** * Oauth2 四种模式类型 */ diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/AbstractEntity.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/AbstractEntity.java index 3a2f69578..2034caa89 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/AbstractEntity.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/AbstractEntity.java @@ -23,8 +23,6 @@ package cn.herodotus.eurynome.common.definition.entity; -import io.swagger.annotations.ApiModelProperty; - /** *

Description : BaseCacheEntity

* @@ -35,16 +33,15 @@ public abstract class AbstractEntity implements Entity { /** * 数据表中除主键以外的唯一数据属性 - * + *

* 有些实体,只使用一个属性作为Cache Key {@link #getId()} ()} 不能满足需求。 * 例如:SysUser,使用UserId和UserName查询都比较频繁,用UserId作为缓存的Key,那么用UserName就无法从缓存读取。 * 除非用UserId作为缓存Key,缓存一遍实体,用UserName再作为缓存Key,缓存一遍实体。这样增加缓存管理复杂度。 - * + *

* 通过getLinkedProperty(),维护一个Map。 * 通过这个Map,实现指定属性与CacheKey的映射。 * * @return LinkedProperty */ - @ApiModelProperty(hidden = true) public abstract String getLinkedProperty(); } diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/Entity.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/Entity.java index 8926e1026..e5c9bb6a4 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/Entity.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/definition/entity/Entity.java @@ -22,8 +22,6 @@ package cn.herodotus.eurynome.common.definition.entity; -import io.swagger.annotations.ApiModelProperty; - import java.io.Serializable; /** @@ -36,8 +34,8 @@ public interface Entity extends Serializable { /** * 根据该值作为缓存对象的Key + * * @return CacheKey */ - @ApiModelProperty(hidden = true) - public String getId(); + String getId(); } diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Error.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Error.java index 79e4a34de..ee3cb9908 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Error.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Error.java @@ -23,8 +23,7 @@ package cn.herodotus.eurynome.common.domain; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -34,19 +33,19 @@ * @author : gengwei.zheng * @date : 2021/8/18 18:12 */ -@ApiModel(description = "响应错误详情") +@Schema(title = "响应错误详情") public class Error implements Serializable { - @ApiModelProperty(value = "Exception完整信息") + @Schema(title = "Exception完整信息", type = "string") private String detail; - @ApiModelProperty(value = "额外的错误信息,目前主要是Validation的Message") + @Schema(title = "额外的错误信息,目前主要是Validation的Message") private String message; - @ApiModelProperty(value = "额外的错误代码,目前主要是Validation的Code") + @Schema(title = "额外的错误代码,目前主要是Validation的Code") private String code; - @ApiModelProperty(value = "额外的错误字段,目前主要是Validation的Field") + @Schema(title = "额外的错误字段,目前主要是Validation的Field") private String field; public String getDetail() { diff --git a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Result.java b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Result.java index eac2e31f9..f12fab4bb 100644 --- a/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Result.java +++ b/packages/eurynome-cloud-common/src/main/java/cn/herodotus/eurynome/common/domain/Result.java @@ -26,8 +26,7 @@ import cn.herodotus.eurynome.common.constant.enums.ResultStatus; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.apache.http.HttpStatus; import java.io.Serializable; @@ -41,32 +40,32 @@ * @author : gengwei.zheng * @date : 2020/2/29 14:50 */ -@ApiModel(description = "统一响应实体") +@Schema(title = "统一响应返回实体", example = "new Result().ok().message(\"XXX\")") public class Result implements Serializable { - @ApiModelProperty(value = "自定义响应编码") + @Schema(title = "自定义响应编码") private int code = 0; - @ApiModelProperty(value = "响应返回信息") + @Schema(title = "响应返回信息") private String message; - @ApiModelProperty(value = "请求路径") + @Schema(title = "请求路径") private String path; - @ApiModelProperty(value = "响应返回数据") + @Schema(title = "响应返回数据") private T data; - @ApiModelProperty(value = "http状态码") + @Schema(title = "http状态码") private int status; - @ApiModelProperty(value = "错误堆栈信息") + @Schema(title = "错误堆栈信息") private StackTraceElement[] stackTrace; - @ApiModelProperty(value = "响应时间戳") + @Schema(title = "响应时间戳", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date timestamp = new Date(); - @ApiModelProperty(value = "校验错误信息") + @Schema(title = "校验错误信息") private Error error = new Error(); public Result() { diff --git a/packages/eurynome-cloud-data/pom.xml b/packages/eurynome-cloud-data/pom.xml index 555567cd2..909b40f84 100644 --- a/packages/eurynome-cloud-data/pom.xml +++ b/packages/eurynome-cloud-data/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-data - 2.5.4.110 + 2.5.4.120 jar 数据相关通用代码组件包,包括JPA,Redis,数据实体等相关内容 diff --git a/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseEntity.java b/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseEntity.java index 97a076cc9..d6ab1ee14 100644 --- a/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseEntity.java +++ b/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseEntity.java @@ -25,13 +25,11 @@ import cn.herodotus.eurynome.common.definition.entity.AbstractEntity; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.Column; -import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import java.util.Date; @@ -44,19 +42,19 @@ @MappedSuperclass public abstract class BaseEntity extends AbstractEntity { - @ApiModelProperty(value = "数据创建时间") + @Schema(title = "数据创建时间") @Column(name = "create_time", updatable = false) @CreatedDate @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime = new Date(); - @ApiModelProperty(value = "数据更新时间") + @Schema(title = "数据更新时间") @Column(name = "update_time") @LastModifiedDate @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime = new Date(); - @ApiModelProperty(value = "排序值") + @Schema(title = "排序值") @Column(name = "ranking") private Integer ranking = 0; diff --git a/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseSysEntity.java b/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseSysEntity.java index ed574a0e3..3f9aa0318 100644 --- a/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseSysEntity.java +++ b/packages/eurynome-cloud-data/src/main/java/cn/herodotus/eurynome/data/base/entity/BaseSysEntity.java @@ -23,7 +23,7 @@ package cn.herodotus.eurynome.data.base.entity; import cn.herodotus.eurynome.common.constant.enums.StatusEnum; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; @@ -38,23 +38,23 @@ @EntityListeners(AuditingEntityListener.class) public abstract class BaseSysEntity extends BaseEntity { - @ApiModelProperty(value = "数据状态") + @Schema(title = "数据状态") @Column(name = "status") @Enumerated(EnumType.ORDINAL) private StatusEnum status = StatusEnum.ENABLE; - @ApiModelProperty(value = "是否为保留数据", notes = "True 为不能删,False为可以删除") + @Schema(title = "是否为保留数据", description = "True 为不能删,False为可以删除") @Column(name = "is_reserved") private Boolean reserved = Boolean.FALSE; - @ApiModelProperty(value = "版本号") + @Schema(title = "版本号") @Column(name = "reversion") private Integer reversion = 0; /** * 角色描述,UI界面显示使用 */ - @ApiModelProperty(value = "备注") + @Schema(title = "备注") @Column(name = "description", length = 512) private String description; diff --git a/packages/eurynome-cloud-kernel/pom.xml b/packages/eurynome-cloud-kernel/pom.xml index 7e2cbdfc3..9ab4af8f9 100644 --- a/packages/eurynome-cloud-kernel/pom.xml +++ b/packages/eurynome-cloud-kernel/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-kernel - 2.5.4.110 + 2.5.4.120 jar 平台通用的基础依赖,以及接入及管理等通用代码,上中台必需的基础代码。增加这层包,主要目的是抽取webflux和web依赖的通用性,降低其它包之间的耦合性,比如之前data要依赖logstash,logstash要依赖managementproperties diff --git a/packages/eurynome-cloud-oauth-starter/pom.xml b/packages/eurynome-cloud-oauth-starter/pom.xml index dfaacca09..6efa3aac9 100644 --- a/packages/eurynome-cloud-oauth-starter/pom.xml +++ b/packages/eurynome-cloud-oauth-starter/pom.xml @@ -30,11 +30,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-oauth-starter - 2.5.4.110 + 2.5.4.120 jar diff --git a/packages/eurynome-cloud-oauth/pom.xml b/packages/eurynome-cloud-oauth/pom.xml index 76d97860f..69d52797d 100644 --- a/packages/eurynome-cloud-oauth/pom.xml +++ b/packages/eurynome-cloud-oauth/pom.xml @@ -29,12 +29,12 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-oauth - 2.5.4.110 + 2.5.4.120 jar diff --git a/packages/eurynome-cloud-oauth/src/main/java/cn/herodotus/eurynome/oauth/controller/IdentityController.java b/packages/eurynome-cloud-oauth/src/main/java/cn/herodotus/eurynome/oauth/controller/IdentityController.java index 51525cec5..b80d5bc79 100644 --- a/packages/eurynome-cloud-oauth/src/main/java/cn/herodotus/eurynome/oauth/controller/IdentityController.java +++ b/packages/eurynome-cloud-oauth/src/main/java/cn/herodotus/eurynome/oauth/controller/IdentityController.java @@ -25,8 +25,8 @@ import cn.herodotus.eurynome.common.domain.Result; import cn.herodotus.eurynome.security.definition.core.HerodotusUserDetails; import cn.herodotus.eurynome.security.utils.SecurityUtils; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.security.oauth2.provider.token.ConsumerTokenServices; import org.springframework.web.bind.annotation.GetMapping; @@ -41,7 +41,7 @@ */ @Slf4j @RestController -@Api(tags = "认证接口") +@Tag(name = "认证接口") public class IdentityController { @Resource @@ -52,7 +52,7 @@ public class IdentityController { * * @return Result */ - @ApiOperation(value = "获取当前登录用户信息", notes = "获取当前登录用户信息") + @Operation(summary = "获取当前登录用户信息", description = "获取当前登录用户信息") @GetMapping("/identity/profile") public Result getUserProfile() { diff --git a/packages/eurynome-cloud-rest/pom.xml b/packages/eurynome-cloud-rest/pom.xml index 0ea556148..4ad29ebea 100644 --- a/packages/eurynome-cloud-rest/pom.xml +++ b/packages/eurynome-cloud-rest/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-rest - 2.5.4.110 + 2.5.4.120 jar @@ -42,7 +42,16 @@ eurynome-cloud-data - + + org.springdoc + springdoc-openapi-ui + + + org.springdoc + springdoc-openapi-security + + + org.springframework.cloud spring-cloud-starter-openfeign diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/business/Pager.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/business/Pager.java index 29ba522c9..a26091f15 100644 --- a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/business/Pager.java +++ b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/business/Pager.java @@ -23,6 +23,7 @@ package cn.herodotus.eurynome.rest.base.business; import com.google.common.base.MoreObjects; +import io.swagger.v3.oas.annotations.media.Schema; import javax.validation.constraints.Max; import javax.validation.constraints.Min; @@ -34,16 +35,19 @@ * @author : gengwei.zheng * @date : 2021/8/18 17:55 */ +@Schema(title = "分页参数BO对象") public class Pager { @NotNull(message = "页码不能为空") @Min(value = 0, message = "页码不能为负") - private Integer pageNumber; + @Schema(title = "页码", type = "integer", minimum = "0", defaultValue = "0") + private Integer pageNumber = 0; @NotNull(message = "每页条数不能为空") @Min(value = 1, message = "每页条数至少为1条") @Max(value = 1000, message = "每页条数不能超过1000") - private Integer pageSize; + @Schema(title = "每页数据条数", type = "integer", minimum = "0", maximum = "1000", defaultValue = "10") + private Integer pageSize = 10; public Integer getPageNumber() { return pageNumber; diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseReadableRestController.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseReadableRestController.java index 327127c56..e671f474c 100644 --- a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseReadableRestController.java +++ b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseReadableRestController.java @@ -23,12 +23,15 @@ package cn.herodotus.eurynome.rest.base.controller; import cn.herodotus.eurynome.assistant.annotation.rest.AccessLimited; +import cn.herodotus.eurynome.common.constant.magic.SecurityConstants; import cn.herodotus.eurynome.common.definition.entity.AbstractEntity; import cn.herodotus.eurynome.common.domain.Result; import cn.herodotus.eurynome.rest.base.business.Pager; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.enums.ParameterIn; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springframework.web.bind.annotation.GetMapping; import java.io.Serializable; @@ -40,12 +43,13 @@ * @author : gengwei.zheng * @date : 2021/7/7 17:38 */ +@SecurityRequirement(name = SecurityConstants.OPEN_API_SECURITY_SCHEME_BEARER_NAME) public abstract class BaseReadableRestController implements ReadableController { @AccessLimited - @ApiOperation(value = "分页查询数据", notes = "通过pageNumber和pageSize获取分页数据", produces = "application/json") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pager", required = true, value = "分页Bo对象", dataType = "Pager", dataTypeClass = Pager.class, paramType = "query") + @Operation(summary = "分页查询数据", description = "通过pageNumber和pageSize获取分页数据") + @Parameters({ + @Parameter(name = "pager", required = true, in = ParameterIn.PATH, description = "分页Bo对象") }) @GetMapping public Result> findByPage(Pager pager) { diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseWriteableRestController.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseWriteableRestController.java index 4d5b970b3..409be526d 100644 --- a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseWriteableRestController.java +++ b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/base/controller/BaseWriteableRestController.java @@ -26,9 +26,9 @@ import cn.herodotus.eurynome.common.definition.entity.AbstractEntity; import cn.herodotus.eurynome.common.domain.Result; import cn.herodotus.eurynome.rest.base.service.ReadableService; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -49,9 +49,9 @@ public ReadableService getReadableService() { } @Idempotent - @ApiOperation(value = "保存或更新数据", notes = "接收JSON数据,转换为实体,进行保存或更新", produces = "application/json", consumes = "application/json") - @ApiImplicitParams({ - @ApiImplicitParam(name = "domain", required = true, value = "可转换为实体的json数据", dataType = "AbstractEntity", dataTypeClass = AbstractEntity.class, paramType = "body") + @Operation(summary = "保存或更新数据", description = "接收JSON数据,转换为实体,进行保存或更新") + @Parameters({ + @Parameter(name = "domain", required = true, description = "可转换为实体的json数据") }) @PostMapping @Override @@ -60,9 +60,9 @@ public Result saveOrUpdate(@RequestBody E domain) { } @Idempotent - @ApiOperation(value = "删除数据", notes = "根据实体ID删除数据,以及相关联的关联数据", consumes = "application/json") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", required = true, value = "实体ID,@Id注解对应的实体属性", dataType = "Serializable", dataTypeClass = Serializable.class, paramType = "body") + @Operation(summary = "删除数据", description = "根据实体ID删除数据,以及相关联的关联数据") + @Parameters({ + @Parameter(name = "id", required = true, description = "实体ID,@Id注解对应的实体属性") }) @DeleteMapping @Override diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/OpenAPIConfiguration.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/OpenAPIConfiguration.java new file mode 100644 index 000000000..09b28f655 --- /dev/null +++ b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/OpenAPIConfiguration.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2019-2021 Gengwei Zheng (herodotus@aliyun.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Project Name: eurynome-cloud + * Module Name: eurynome-cloud-rest + * File Name: SwaggerConfiguration.java + * Author: gengwei.zheng + * Date: 2021/08/20 11:58:20 + */ + +package cn.herodotus.eurynome.rest.configuration; + +import cn.herodotus.eurynome.assistant.annotation.conditional.ConditionalOnSwaggerEnabled; +import cn.herodotus.eurynome.common.constant.enums.Architecture; +import cn.herodotus.eurynome.common.constant.magic.SecurityConstants; +import cn.herodotus.eurynome.common.constant.magic.SymbolConstants; +import cn.herodotus.eurynome.rest.properties.PlatformProperties; +import cn.herodotus.eurynome.rest.properties.ServiceProperties; +import com.google.common.collect.ImmutableList; +import io.swagger.v3.oas.annotations.enums.SecuritySchemeType; +import io.swagger.v3.oas.annotations.security.*; +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.servers.Server; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + *

Description : SwaggerConfiguration

+ *

+ * 原来的@EnableSwagger2去掉 + * + * @author : gengwei.zheng + * @date : 2020/3/31 11:54 + */ +@Slf4j +@Configuration +@ConditionalOnSwaggerEnabled +@AutoConfigureAfter(ServiceConfiguration.class) +@SecuritySchemes({ + @SecurityScheme(name = SecurityConstants.OPEN_API_SECURITY_SCHEME_BEARER_NAME, type = SecuritySchemeType.OAUTH2, bearerFormat = "JWT", scheme = "bearer", + flows = @OAuthFlows( + password = @OAuthFlow(authorizationUrl = "${herodotus.platform.endpoint.user-authorization-uri}", tokenUrl = "${herodotus.platform.endpoint.access-token-uri}", refreshUrl = "${herodotus.platform.endpoint.access-token-uri}", scopes = @OAuthScope(name = "all")), + authorizationCode = @OAuthFlow(authorizationUrl = "${herodotus.platform.endpoint.user-authorization-uri}", tokenUrl = "${herodotus.platform.endpoint.access-token-uri}", refreshUrl = "${herodotus.platform.endpoint.access-token-uri}", scopes = @OAuthScope(name = "all")) + )), +}) +public class OpenAPIConfiguration { + + @Autowired + private PlatformProperties platformProperties; + @Autowired + private ServiceProperties serviceProperties; + + @PostConstruct + public void postConstruct() { + log.debug("[Eurynome] |- Plugin [Herodotus Swagger] Auto Configure."); + } + + @Bean + public OpenAPI createOpenAPI() { + return new OpenAPI() + .servers(getServers()) + .info(new Info().title("Eurynome Cloud") + .description("Eurynome Cloud Microservices Architecture") + .version("v2.5.5.0") + .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/"))) + .externalDocs(new ExternalDocumentation() + .description("Eurynome Cloud Documentation") + .url(" https://herodotus.gitee.io/eurynome-cloud")); + } + + private String getServiceAddress() { + if (platformProperties.getArchitecture().equals(Architecture.DISTRIBUTED)) { + return platformProperties.getEndpoint().getGatewayAddress() + SymbolConstants.FORWARD_SLASH + serviceProperties.getApplicationName(); + } else { + return serviceProperties.getAddress(); + } + } + + private List getServers() { + Server server = new Server(); + server.setUrl(getServiceAddress()); + return ImmutableList.of(server); + } +} diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/RestConfiguration.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/RestConfiguration.java index a703297f4..a4527902a 100644 --- a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/RestConfiguration.java +++ b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/RestConfiguration.java @@ -61,7 +61,7 @@ JacksonConfiguration.class, RestTemplateConfiguration.class, ServiceConfiguration.class, - SwaggerConfiguration.class, + OpenAPIConfiguration.class, UndertowWebServerFactoryCustomizer.class }) public class RestConfiguration { diff --git a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/SwaggerConfiguration.java b/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/SwaggerConfiguration.java deleted file mode 100644 index 1439b58ed..000000000 --- a/packages/eurynome-cloud-rest/src/main/java/cn/herodotus/eurynome/rest/configuration/SwaggerConfiguration.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2019-2021 Gengwei Zheng (herodotus@aliyun.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Project Name: eurynome-cloud - * Module Name: eurynome-cloud-rest - * File Name: SwaggerConfiguration.java - * Author: gengwei.zheng - * Date: 2021/08/20 11:58:20 - */ - -package cn.herodotus.eurynome.rest.configuration; - -import cn.herodotus.eurynome.assistant.annotation.conditional.ConditionalOnSwaggerEnabled; -import cn.herodotus.eurynome.common.constant.magic.SecurityConstants; -import cn.herodotus.eurynome.common.constant.enums.Architecture; -import cn.herodotus.eurynome.rest.properties.PlatformProperties; -import cn.herodotus.eurynome.rest.properties.ServiceProperties; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.OAuthBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.*; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import javax.annotation.PostConstruct; -import java.util.Collections; - -/** - *

Description : SwaggerConfiguration

- *

- * 原来的@EnableSwagger2去掉 - * - * @author : gengwei.zheng - * @date : 2020/3/31 11:54 - */ -@Slf4j -@Configuration -@ConditionalOnSwaggerEnabled -@AutoConfigureAfter(ServiceConfiguration.class) -@EnableSwagger2 -public class SwaggerConfiguration { - - /** - * Knife4j的一个问题,只能设置"oauth2",否则token配置界面不会显示 - */ - private static final String SCHEMA_OAUTH_NAME = "oauth2"; - - @Autowired - private PlatformProperties platformProperties; - @Autowired - private ServiceProperties serviceProperties; - - @PostConstruct - public void postConstruct() { - log.debug("[Eurynome] |- Plugin [Herodotus Swagger] Auto Configure."); - } - - private String getTokenAddress() { - if (platformProperties.getArchitecture().equals(Architecture.MONOCOQUE)) { - return serviceProperties.getUrl() + SecurityConstants.ENDPOINT_OAUTH_TOKEN; - } else { - return platformProperties.getEndpoint().getAccessTokenUri(); - } - } - - @Bean - public Docket docket() { - // 注意此处改动,需要将SWAGGER_2改成OAS_30 - return new Docket(DocumentationType.SWAGGER_2) - .select() - // 扫描所有有注解的api,用这种方式更灵活 - .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) - .paths(PathSelectors.any()) - .build() - .apiInfo(apiInfo()) - // 支持的通讯协议集合 - .securitySchemes(Collections.singletonList(securityScheme())) - .securityContexts(Collections.singletonList(securityContexts())); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("Herodotus Cloud 聚合文档") - .description("Herodotus Cloud 微服务框架") - .contact(new Contact("码匠君", "https://blog.csdn.net/Pointer_v", "herodotus@aliyun.com")) - .version("1.0") - .build(); - } - - /** - * 这里是写允许认证的scope - */ - private AuthorizationScope[] scopes() { - return new AuthorizationScope[]{ - new AuthorizationScope("all", "All scope is trusted!") - }; - } - - /** - * 这个类决定了你使用哪种认证方式,我这里使用密码模式 - */ - private SecurityScheme securityScheme() { - GrantType grantType = new ResourceOwnerPasswordCredentialsGrant(this.getTokenAddress()); - - return new OAuthBuilder() - .name(SCHEMA_OAUTH_NAME) - .grantTypes(Collections.singletonList(grantType)) - .build(); - } - - /** - * 授权信息全局应用 - */ - private SecurityContext securityContexts() { - return SecurityContext.builder() - .securityReferences(Collections.singletonList(new SecurityReference(SCHEMA_OAUTH_NAME, scopes()))) - .forPaths(PathSelectors.any()) - .build(); - } -} diff --git a/packages/eurynome-cloud-security/pom.xml b/packages/eurynome-cloud-security/pom.xml index 07174339c..032fa39cf 100644 --- a/packages/eurynome-cloud-security/pom.xml +++ b/packages/eurynome-cloud-security/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-security - 2.5.4.110 + 2.5.4.120 jar @@ -52,15 +52,5 @@ spring-security-oauth2-jose - - com.github.penggle - kaptcha - - - javax.servlet-api - javax.servlet - - - \ No newline at end of file diff --git a/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/authentication/access/RequestMappingScanner.java b/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/authentication/access/RequestMappingScanner.java index 83bea755e..5cd7eca70 100644 --- a/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/authentication/access/RequestMappingScanner.java +++ b/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/authentication/access/RequestMappingScanner.java @@ -33,7 +33,8 @@ import cn.herodotus.eurynome.security.service.RequestMappingGatherService; import cn.hutool.core.util.HashUtil; import cn.hutool.crypto.SecureUtil; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.Operation; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; @@ -50,7 +51,6 @@ import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; -import springfox.documentation.annotations.ApiIgnore; import java.lang.annotation.Annotation; import java.util.ArrayList; @@ -179,11 +179,12 @@ private boolean isSpringAnnotationMatched(HandlerMethod handlerMethod) { * @return boolean */ private boolean isSwaggerAnnotationMatched(HandlerMethod handlerMethod) { - if (handlerMethod.getMethodAnnotation(ApiIgnore.class) != null) { + if (handlerMethod.getMethodAnnotation(Hidden.class) != null) { return false; } - return handlerMethod.getMethodAnnotation(ApiOperation.class) != null; + Operation operation = handlerMethod.getMethodAnnotation(Operation.class); + return ObjectUtils.isNotEmpty(operation) && !operation.hidden(); } /** @@ -250,10 +251,10 @@ private RequestMapping createRequestMapping(String serviceId, RequestMappingInfo requestMapping.setServiceId(identifyingCode); requestMapping.setParentId(identifyingCode); } - ApiOperation apiOperation = method.getMethodAnnotation(ApiOperation.class); + Operation apiOperation = method.getMethodAnnotation(Operation.class); if (ObjectUtils.isNotEmpty(apiOperation)) { - requestMapping.setMetadataName(apiOperation.value()); - requestMapping.setDescription(apiOperation.notes()); + requestMapping.setMetadataName(apiOperation.summary()); + requestMapping.setDescription(apiOperation.description()); } requestMapping.setRequestMethod(requestMethods); requestMapping.setUrl(urls); diff --git a/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/autoconfigure/WebMvcAutoConfiguration.java b/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/autoconfigure/WebMvcAutoConfiguration.java index 037f620ab..1d3870418 100644 --- a/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/autoconfigure/WebMvcAutoConfiguration.java +++ b/packages/eurynome-cloud-security/src/main/java/cn/herodotus/eurynome/security/autoconfigure/WebMvcAutoConfiguration.java @@ -116,12 +116,12 @@ private String[] getIgnoredStaticResources() { List defaultIgnored = Lists.newArrayList("/error", "/static/**", "/webjars/**", - "/resources/**", - "/swagger-ui.html", - "/swagger-resources/**", - "/v2/api-docs", "/features/**", "/plugins/**", + "/swagger-ui.html", + "/swagger-ui/**", + "/v3/api-docs/**", + "/openapi*", "/favicon.ico"); List customIgnored = securityProperties.getInterceptor().getStaticResource(); diff --git a/packages/eurynome-cloud-starter/pom.xml b/packages/eurynome-cloud-starter/pom.xml index 97bcbe799..7d3841614 100644 --- a/packages/eurynome-cloud-starter/pom.xml +++ b/packages/eurynome-cloud-starter/pom.xml @@ -29,11 +29,11 @@ packages cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-starter - 2.5.4.110 + 2.5.4.120 通用配置starter,此包的定位是统一未来接入的微服务使用 jar diff --git a/packages/pom.xml b/packages/pom.xml index 65c84cc72..8bfb58d1b 100644 --- a/packages/pom.xml +++ b/packages/pom.xml @@ -29,7 +29,7 @@ eurynome-cloud cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 packages diff --git a/platform/eurynome-cloud-gateway/pom.xml b/platform/eurynome-cloud-gateway/pom.xml index cf41769a4..7b5698822 100644 --- a/platform/eurynome-cloud-gateway/pom.xml +++ b/platform/eurynome-cloud-gateway/pom.xml @@ -29,11 +29,11 @@ platform cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-gateway - 2.5.4.110 + 2.5.4.120 jar @@ -52,12 +52,12 @@ eurynome-cloud-data - com.github.xiaoymin - knife4j-spring-ui + org.springdoc + springdoc-openapi-webflux-ui - io.springfox - springfox-swagger-ui + com.github.xiaoymin + knife4j-springdoc-ui org.springframework.cloud diff --git a/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/configuration/SwaggerProvider.java b/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/configuration/SwaggerProvider.java deleted file mode 100644 index 44101b717..000000000 --- a/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/configuration/SwaggerProvider.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2019-2021 Gengwei Zheng(herodotus@aliyun.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Project Name: eurynome-cloud - * Module Name: eurynome-cloud-gateway - * File Name: SwaggerProvider.java - * Author: gengwei.zheng - * Date: 2021/05/07 11:28:07 - */ - -package cn.herodotus.eurynome.gateway.configuration; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.gateway.route.RouteDefinition; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; -import springfox.documentation.swagger.web.SwaggerResource; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; - -import java.util.*; - -/** - *

Description: Swagger文档聚集配置

- * - * @author : gengwei.zheng - * @date : 2020/4/6 16:16 - */ -@Slf4j -@Component -@Primary -public class SwaggerProvider implements SwaggerResourcesProvider { - - public static final String API_URI = "/v2/api-docs"; - - /** - * 网关应用名称 - */ - @Value("${spring.application.name}") - private String self; - - private final RouteLocator routeLocator; - - @Autowired - public SwaggerProvider(RouteLocator routeLocator) { - this.routeLocator = routeLocator; - } - - @Override - public List get() { - List resources = new ArrayList<>(); - List routes = new ArrayList<>(); - routeLocator.getRoutes() - .filter(route -> route.getUri().getHost() != null && Objects.equals(route.getUri().getScheme(), "lb") && !self.equalsIgnoreCase(route.getUri().getHost())) - .subscribe(route -> routes.add(route.getUri().getHost())); - - // 记录已经添加过的server,存在同一个应用注册了多个服务在注册中心上 - Set processed = new HashSet<>(); - routes.forEach(service -> { - System.out.println(service); - // 拼接url ,请求swagger的url - String url = "/" + service.toLowerCase() + API_URI; - if (!processed.contains(url)) { - processed.add(url); - resources.add(createSwaggerResource(service, url)); - } - }); - return resources; - } - - private SwaggerResource createSwaggerResource(String name, String url) { - - log.debug("[Eurynome] |- Create Swagger Resource - Name: {}, Location {}.", name, url); - - SwaggerResource swaggerResource = new SwaggerResource(); - swaggerResource.setName(name); - swaggerResource.setUrl(url); - swaggerResource.setLocation(url); - swaggerResource.setSwaggerVersion("3.0"); - return swaggerResource; - } -} diff --git a/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/controller/SwaggerHandler.java b/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/controller/SwaggerHandler.java deleted file mode 100644 index e7cfd77ec..000000000 --- a/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/controller/SwaggerHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2019-2021 Gengwei Zheng(herodotus@aliyun.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Project Name: eurynome-cloud - * Module Name: eurynome-cloud-gateway - * File Name: SwaggerHandler.java - * Author: gengwei.zheng - * Date: 2021/05/07 11:28:07 - */ - -package cn.herodotus.eurynome.gateway.controller; - - -import cn.herodotus.eurynome.gateway.configuration.SwaggerProvider; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; -import springfox.documentation.swagger.web.SecurityConfiguration; -import springfox.documentation.swagger.web.SecurityConfigurationBuilder; -import springfox.documentation.swagger.web.UiConfiguration; -import springfox.documentation.swagger.web.UiConfigurationBuilder; - -import java.util.Optional; - -@RestController -public class SwaggerHandler { - - @Autowired(required = false) - private SecurityConfiguration securityConfiguration; - @Autowired(required = false) - private UiConfiguration uiConfiguration; - - private final SwaggerProvider swaggerProvider; - - @Autowired - public SwaggerHandler(SwaggerProvider swaggerProvider) { - this.swaggerProvider = swaggerProvider; - } - - @GetMapping("/swagger-resources/configuration/security") - public Mono> securityConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @GetMapping("/swagger-resources/configuration/ui") - public Mono> uiConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @GetMapping("/swagger-resources") - public Mono swaggerResources() { - return Mono.just((new ResponseEntity<>(swaggerProvider.get(), HttpStatus.OK))); - } -} diff --git a/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/handler/RefreshRoutesListener.java b/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/handler/RefreshRoutesListener.java new file mode 100644 index 000000000..a7c42566b --- /dev/null +++ b/platform/eurynome-cloud-gateway/src/main/java/cn/herodotus/eurynome/gateway/handler/RefreshRoutesListener.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2019-2021 Gengwei Zheng (herodotus@aliyun.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Project Name: eurynome-cloud + * Module Name: eurynome-cloud-gateway + * File Name: ServiceRefreshRoutesListener.java + * Author: gengwei.zheng + * Date: 2021/09/11 10:14:11 + */ + +package cn.herodotus.eurynome.gateway.handler; + +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springdoc.core.AbstractSwaggerUiConfigProperties; +import org.springdoc.core.SwaggerUiConfigParameters; +import org.springdoc.core.SwaggerUiConfigProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.gateway.event.RefreshRoutesEvent; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.context.ApplicationListener; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

Description: 服务变更监听

+ * + * @author : gengwei.zheng + * @date : 2021/9/11 10:14 + */ +@Component +public class RefreshRoutesListener implements ApplicationListener { + + private static final Logger log = LoggerFactory.getLogger(RefreshRoutesListener.class); + + public static final String API_URI = "/v3/api-docs"; + + /** + * 网关应用名称 + */ + @Value("${spring.application.name}") + private String self; + @Autowired + private RouteLocator routeLocator; + @Autowired + private SwaggerUiConfigParameters swaggerUiConfigParameters; + @Autowired + private SwaggerUiConfigProperties swaggerUiConfigProperties; + + @Override + public void onApplicationEvent(RefreshRoutesEvent refreshRoutesEvent) { + + List routes = new ArrayList<>(); + routeLocator.getRoutes() + .filter(route -> route.getUri().getHost() != null && Objects.equals(route.getUri().getScheme(), "lb") && !self.equalsIgnoreCase(route.getUri().getHost())) + .subscribe(route -> routes.add(route.getUri().getHost())); + + Set swaggerUrls = routes.stream().map(this::createSwaggerUrl).collect(Collectors.toSet()); + + if (ObjectUtils.isNotEmpty(swaggerUiConfigParameters)) { + log.debug("[Herodotus] |- Services is Changed, update Urls"); + swaggerUiConfigParameters.setUrls(swaggerUrls); + swaggerUiConfigProperties.setUrls(swaggerUrls); + } + } + + private AbstractSwaggerUiConfigProperties.SwaggerUrl createSwaggerUrl(String service) { + + String data = API_URI; + + if (StringUtils.containsIgnoreCase(service, "bpmn")) { + data = "/openapi.json"; + } + + String url = "/" + service.toLowerCase() + data; + + log.debug("[Herodotus] |- Create Swagger Url - Name: {}, Location {}.", service, url); + + AbstractSwaggerUiConfigProperties.SwaggerUrl swaggerUrl = new AbstractSwaggerUiConfigProperties.SwaggerUrl(); + swaggerUrl.setUrl(url); + swaggerUrl.setName(service); + return swaggerUrl; + } +} + diff --git a/platform/eurynome-cloud-gateway/src/main/resources/bootstrap.yml b/platform/eurynome-cloud-gateway/src/main/resources/bootstrap.yml index e06ba46bd..4b2841327 100644 --- a/platform/eurynome-cloud-gateway/src/main/resources/bootstrap.yml +++ b/platform/eurynome-cloud-gateway/src/main/resources/bootstrap.yml @@ -48,17 +48,28 @@ spring: transport: port: 8719 dashboard: @sentinel.server-addr@ + +springdoc: + webjars: + prefix: /document + herodotus: gateway: white-list: - "/oauth/token" - "/oauth/check_token" - "/oauth/authorize" - - "/v2/api-docs/**" + - "/social/token/*" + - "/v3/api-docs/**" + - "/openapi*" + - "/open/**" logging: level: - cn.herodotus.eurynome: debug + cn.herodotus: info org.springframework.security: info - org.apache.kafka: info - com.alibaba.nacos: off \ No newline at end of file + org.springframework.cloud.bus: info + org.apache.kafka: WARN + org.reflections.Reflections: error + com.alibaba.nacos.client: off + com.alibaba.nacos.common.remote.client: error \ No newline at end of file diff --git a/platform/eurynome-cloud-management/pom.xml b/platform/eurynome-cloud-management/pom.xml index 01c4328f9..55767983f 100644 --- a/platform/eurynome-cloud-management/pom.xml +++ b/platform/eurynome-cloud-management/pom.xml @@ -29,11 +29,11 @@ platform cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-management - 2.5.4.110 + 2.5.4.120 jar diff --git a/platform/eurynome-cloud-management/src/main/resources/configs/common/eurynome-cloud-rest.yaml b/platform/eurynome-cloud-management/src/main/resources/configs/common/eurynome-cloud-rest.yaml index 615240f15..bc684f979 100644 --- a/platform/eurynome-cloud-management/src/main/resources/configs/common/eurynome-cloud-rest.yaml +++ b/platform/eurynome-cloud-management/src/main/resources/configs/common/eurynome-cloud-rest.yaml @@ -4,6 +4,19 @@ spring: cache: false prefix: classpath:/templates +springdoc: + api-docs: + resolve-schema-properties: true + swagger-ui: + enabled: ${herodotus.switch.swagger.enabled} + disable-swagger-default-url: true + operations-sorter: method + show-common-extensions: true + show-extensions: true + oauth: + use-pkce-with-authorization-code-grant: true + app-name: ${spring.application.name} + management: endpoints: web: diff --git a/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022300.zip b/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022300.zip new file mode 100644 index 000000000..4302994c5 Binary files /dev/null and b/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022300.zip differ diff --git a/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022310.zip b/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022310.zip new file mode 100644 index 000000000..dac00db1c Binary files /dev/null and b/platform/eurynome-cloud-management/src/main/resources/imports/v2.5.4.120/nacos_config_export_20210912022310.zip differ diff --git a/platform/eurynome-cloud-uaa/pom.xml b/platform/eurynome-cloud-uaa/pom.xml index db3ba5617..02f37dd03 100644 --- a/platform/eurynome-cloud-uaa/pom.xml +++ b/platform/eurynome-cloud-uaa/pom.xml @@ -29,11 +29,11 @@ platform cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-uaa - 2.5.4.110 + 2.5.4.120 jar @@ -48,11 +48,6 @@ eurynome-cloud-kernel
- - org.springframework.boot - spring-boot-starter-test - test - diff --git a/platform/eurynome-cloud-uaa/src/main/resources/bootstrap.yml b/platform/eurynome-cloud-uaa/src/main/resources/bootstrap.yml index 45ca5f51b..ab9e2c547 100644 --- a/platform/eurynome-cloud-uaa/src/main/resources/bootstrap.yml +++ b/platform/eurynome-cloud-uaa/src/main/resources/bootstrap.yml @@ -43,7 +43,10 @@ spring: logging: level: - cn.herodotus.eurynome: debug - org.springframework.security: debug - org.apache.kafka: info - com.alibaba.nacos: off \ No newline at end of file + cn.herodotus: info + org.springframework.security: info + org.springframework.cloud.bus: info + org.apache.kafka: WARN + org.reflections.Reflections: error + com.alibaba.nacos.client: off + com.alibaba.nacos.common.remote.client: error \ No newline at end of file diff --git a/platform/pom.xml b/platform/pom.xml index 9c4df175b..d8ba7b445 100644 --- a/platform/pom.xml +++ b/platform/pom.xml @@ -29,7 +29,7 @@ eurynome-cloud cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 4.0.0 diff --git a/pom.xml b/pom.xml index 2ad810cfb..6f721e03c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,12 +7,12 @@ cn.herodotus.eurynome dependencies - 2.5.4.110 + 2.5.4.120 dependencies/pom.xml eurynome-cloud - 2.5.4.110 + 2.5.4.120 pom eurynome-cloud @@ -274,56 +274,23 @@ org.apache.maven.plugins maven-surefire-plugin - - true - org.apache.maven.plugins maven-source-plugin ${skip.build.source.package} - true - - - attach-sources - - jar-no-fork - - - org.codehaus.mojo versions-maven-plugin - - false - pl.project13.maven git-commit-id-plugin ${skip.build.git.commit.info} - - ${project.basedir}/.git - - git - - false - - true - - ${project.build.outputDirectory}/git.properties - - - - - false - false - -dirty - diff --git a/services/eurynome-cloud-bpmn-ability/pom.xml b/services/eurynome-cloud-bpmn-ability/pom.xml index 2a4c9aac3..2b3113ec4 100644 --- a/services/eurynome-cloud-bpmn-ability/pom.xml +++ b/services/eurynome-cloud-bpmn-ability/pom.xml @@ -27,12 +27,12 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 4.0.0 eurynome-cloud-bpmn-ability - 2.5.4.110 + 2.5.4.120 基于Camunda工作流的服务 @@ -52,6 +52,12 @@ org.camunda.bpm.springboot camunda-bpm-spring-boot-starter-rest + + + spring-boot-starter-tomcat + org.springframework.boot + + diff --git a/services/eurynome-cloud-bpmn-ability/src/main/resources/META-INF/resources/openapi.json b/services/eurynome-cloud-bpmn-ability/src/main/resources/META-INF/resources/openapi.json new file mode 100644 index 000000000..712954458 --- /dev/null +++ b/services/eurynome-cloud-bpmn-ability/src/main/resources/META-INF/resources/openapi.json @@ -0,0 +1,33278 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "Camunda Platform REST API", + "description": "OpenApi Spec for Camunda Platform REST API.", + "version": "7.15.0", + "license": { + "name": "Apache License 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "externalDocs": { + "description": "Find out more about Camunda Rest API", + "url": "https://docs.camunda.org/manual/7.15/reference/rest/overview/" + }, + "servers": [ + { + "url": "http://{host}:{port}/{contextPath}", + "description": "The API server for the default process engine", + "variables": { + "host": { + "default": "localhost" + }, + "port": { + "default": "8080" + }, + "contextPath": { + "default": "engine-rest" + } + } + }, + { + "url": "http://{host}:{port}/{contextPath}/engine/{engineName}", + "description": "The API server for a named process engine", + "variables": { + "host": { + "default": "localhost" + }, + "port": { + "default": "8080" + }, + "contextPath": { + "default": "engine-rest" + }, + "engineName": { + "default": "default" + } + } + }, + { + "url": "{url}", + "description": "The API server with a custom url", + "variables": { + "url": { + "default": "" + } + } + } + ], + "tags": [ + { + "name": "Batch" + }, + { + "name": "Condition" + }, + { + "name": "Decision Definition" + }, + { + "name": "Deployment" + }, + { + "name": "Engine" + }, + { + "name": "Event Subscription" + }, + { + "name": "Execution" + }, + { + "name": "External Task" + }, + { + "name": "Group" + }, + { + "name": "Historic Activity Instance" + }, + { + "name": "Historic Process Instance" + }, + { + "name": "Identity" + }, + { + "name": "Incident" + }, + { + "name": "Job" + }, + { + "name": "Message" + }, + { + "name": "Metrics" + }, + { + "name": "Process Definition" + }, + { + "name": "Process Instance" + }, + { + "name": "Signal" + }, + { + "name": "Schema Log" + }, + { + "name": "Task" + }, + { + "name": "Task Attachment" + }, + { + "name": "Task Comment" + }, + { + "name": "Task Identity Link" + }, + { + "name": "Task Local Variable" + }, + { + "name": "Task Variable" + }, + { + "name": "Telemetry" + }, + { + "name": "Tenant" + }, + { + "name": "User" + }, + { + "name": "Variable Instance" + }, + { + "name": "Version" + } + ], + "paths": { + "/batch": { + "get": { + "operationId": "getBatches", + "tags": [ + "Batch" + ], + "summary": "Get List", + "description": "Queries for batches that fulfill given parameters. Parameters may be the properties of batches, such as the id or type.\nThe size of the result set can be retrieved by using the\n[Get Batch Count](https://docs.camunda.org/manual/7.15/reference/rest/batch/get-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "batchId", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "batchId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch id." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/batch/#creating-a-batch)\nfor more information about batch types." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A batch matches if it has one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include batches which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "A `Boolean` value which indicates whether only active or suspended batches should be included.\nWhen the value is set to `true`, only suspended batches will be returned and\nwhen the value is set to `false`, only active batches will be returned." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BatchDto" + } + }, + "examples": { + "example-1": { + "description": "Response for GET `/batch?type\u003daBatchType\u0026sortBy\u003dbatchId\u0026sortOrder\u003dasc`", + "value": [ + { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "batchJobsPerSeed": 100, + "jobsCreated": 10, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "suspended": false, + "tenantId": "aTenantId", + "createUserId": "aUserId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if a `sortOrder` parameter is supplied, but no `sortBy`.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/batch/count": { + "get": { + "operationId": "getBatchesCount", + "tags": [ + "Batch" + ], + "summary": "Get List Count", + "description": "Requests the number of batches that fulfill the query criteria.\nTakes the same filtering parameters as the [Get Batches](https://docs.camunda.org/manual/7.15/reference/rest/batch/get-query/) method.", + "parameters": [ + { + "name": "batchId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch id." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/batch/#creating-a-batch)\nfor more information about batch types." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A batch matches if it has one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include batches which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "A `Boolean` value which indicates whether only active or suspended batches should be included.\nWhen the value is set to `true`, only suspended batches will be returned and\nwhen the value is set to `false`, only active batches will be returned." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/batch/count?type\u003daBatchType`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/batch/statistics": { + "get": { + "operationId": "getBatchStatistics", + "tags": [ + "Batch" + ], + "summary": "Get Statistics", + "description": "Queries for batch statistics that fulfill given parameters.\nParameters may be the properties of batches, such as the id or type.\nThe size of the result set can be retrieved by using the \n[Get Batch Statistics Count](https://docs.camunda.org/manual/7.15/reference/rest/batch/get-statistics-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "batchId", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "batchId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch id." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/batch/#creating-a-batch)\nfor more information about batch types." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A batch matches if it has one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include batches which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "A `Boolean` value which indicates whether only active or suspended batches should be included.\nWhen the value is set to `true`, only suspended batches will be returned and\nwhen the value is set to `false`, only active batches will be returned." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BatchStatisticsDto" + } + }, + "examples": { + "example-1": { + "description": "Response for GET `/batch/statistics?type\u003daBatchType\u0026sortBy\u003dbatchId\u0026sortOrder\u003dasc`", + "value": [ + { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "batchJobsPerSeed": 100, + "jobsCreated": 10, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "remainingJobs": 3, + "completedJobs": 7, + "failedJobs": 1, + "suspended": false, + "tenantId": "aTenantId", + "createUserId": "aUserId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if a `sortOrder` parameter is supplied, but no `sortBy`.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/batch/statistics/count": { + "get": { + "operationId": "getBatchStatisticsCount", + "tags": [ + "Batch" + ], + "summary": "Get Statistics Count", + "description": "Requests the number of batch statistics that fulfill the query criteria.\nTakes the same filtering parameters as the\n[Get Batch Statistics](https://docs.camunda.org/manual/7.15/reference/rest/batch/get-statistics-query/) method.", + "parameters": [ + { + "name": "batchId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch id." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by batch type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/batch/#creating-a-batch)\nfor more information about batch types." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A batch matches if it has one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include batches which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "A `Boolean` value which indicates whether only active or suspended batches should be included.\nWhen the value is set to `true`, only suspended batches will be returned and\nwhen the value is set to `false`, only active batches will be returned." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/batch/count?type\u003daBatchType`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/batch/{id}": { + "delete": { + "operationId": "deleteBatch", + "tags": [ + "Batch" + ], + "summary": "Delete", + "description": "Deletes a batch by id, including all related jobs and job definitions.\nOptionally also deletes the batch history.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the batch to be deleted." + }, + { + "name": "cascade", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "`true`, if the historic batch and historic job logs for this batch should also be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Batch with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "get": { + "operationId": "getBatch", + "tags": [ + "Batch" + ], + "summary": "Get", + "description": "Retrieves a batch by id, according to the Batch interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the batch to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "description": "Response for GET `/batch/aBatchId`", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "batchJobsPerSeed": 100, + "jobsCreated": 10, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "suspended": false, + "tenantId": "aTenantId", + "createUserId": "aUserId" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Batch with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/batch/{id}/suspended": { + "put": { + "operationId": "updateBatchSuspensionState", + "tags": [ + "Batch" + ], + "summary": "Activate/Suspend", + "description": "Activates or suspends a batch by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the batch to activate or suspend." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/batch/aBatch/suspended`", + "value": { + "suspended": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the batch cannot be suspended or activated.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/condition": { + "post": { + "operationId": "evaluateCondition", + "tags": [ + "Condition" + ], + "summary": "Evaluate", + "description": "Triggers evaluation of conditions for conditional start event(s). \nInternally this maps to the engines condition evaluation builder method ConditionEvaluationBuilder#evaluateStartConditions(). \nFor more information see the [Conditional Start Events](https://docs.camunda.org/manual/7.15/reference/bpmn20/events/conditional-events/#conditional-start-event)\nsection of the [BPMN 2.0 Implementation Reference](https://docs.camunda.org/manual/7.15/reference/bpmn20/).", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvaluationConditionDto" + }, + "examples": { + "example-1": { + "summary": "POST /condition", + "description": "The content of the Request Body", + "value": { + "variables": { + "temperature": { + "value": 24, + "type": "Integer", + "valueInfo": { + "transient": true + } + }, + "city": { + "value": "Parma", + "type": "String" + } + }, + "businessKey": "aBusinessKey", + "tenantId": "aTenantId" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "The Response content of a status 200", + "value": [ + { + "links": [], + "id": "aProcInstId", + "definitionId": "aProcDefId", + "businessKey": "aBusinessKey", + "caseInstanceId": null, + "ended": false, + "suspended": false, + "tenantId": "aTenantId" + }, + { + "links": [], + "id": "anotherId", + "definitionId": "aProcDefId", + "businessKey": "aBusinessKey", + "caseInstanceId": null, + "ended": false, + "suspended": false, + "tenantId": "aTenantId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If both tenantId and withoutTenantId are supplied." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "If the user is not allowed to start the process instance of the process definition, which start condition was evaluated to `true`." + } + } + } + }, + "/decision-definition": { + "get": { + "operationId": "getDecisionDefinitions", + "tags": [ + "Decision Definition" + ], + "summary": "Get List", + "description": "Queries for decision definitions that fulfill given parameters.\nParameters may be the properties of decision definitions, such as the name, key or version.\nThe size of the result set can be retrieved by using\nthe [Get Decision Definition Count](https://docs.camunda.org/manual/7.15/reference/rest/decision-definition/get-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "category", + "decisionRequirementsDefinitionKey", + "key", + "id", + "name", + "version", + "deploymentId", + "deployTime", + "versionTag", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "decisionDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition id." + }, + { + "name": "decisionDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition names that the parameter is a substring of." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "deployedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the decision definition belongs to.\nOnly selects decision definitions that have been deployed after (exclusive) a specific time." + }, + { + "name": "deployedAt", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the decision definition belongs to.\nOnly selects decision definitions that have been deployed at a specific time (exact match)." + }, + { + "name": "key", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition key, i.e., the id in the DMN 1.0 XML. Exact match." + }, + { + "name": "keyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition keys that the parameter is a substring of." + }, + { + "name": "category", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition category. Exact match." + }, + { + "name": "categoryLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition categories that the parameter is a substring of." + }, + { + "name": "version", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "description": "Filter by decision definition version." + }, + { + "name": "latestVersion", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include those decision definitions that are latest versions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the decision definition resource. Exact match." + }, + { + "name": "resourceNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by names of those decision definition resources that the parameter is a substring of." + }, + { + "name": "decisionRequirementsDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the decision requirements definition this decision definition belongs to." + }, + { + "name": "decisionRequirementsDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the decision requirements definition this decision definition belongs to." + }, + { + "name": "withoutDecisionRequirementsDefinition", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include decision definitions which does not belongs to any decision requirements definition.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A decision definition must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include decision definitions which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "includeDecisionDefinitionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include decision definitions which belong to no tenant.\nCan be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "versionTag", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag." + }, + { + "name": "versionTagLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tags of those decision definition resources that the parameter is a substring of." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DecisionDefinitionDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition?key\u003ddish-decision\u0026sortBy\u003dcategory\u0026sortOrder\u003dasc`", + "value": [ + { + "id": "dish-decision:1:c633e8a8-41b7-11e6-b0ef-00aa004d0001", + "key": "dish-decision", + "category": "http://camunda.org/schema/1.0/dmn", + "name": "Dish Decision", + "version": 1, + "resource": "drd-dish-decision.dmn", + "deploymentId": "c627175e-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionId": "dish:1:c633c195-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionKey": "dish", + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5 + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if a `sortOrder` parameter is supplied, but no `sortBy`.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/count": { + "get": { + "operationId": "getDecisionDefinitionsCount", + "tags": [ + "Decision Definition" + ], + "summary": "Get List Count", + "description": "Requests the number of decision definitions that fulfill the query criteria.\nTakes the same filtering parameters as the\n[Get Decision Definition](https://docs.camunda.org/manual/7.15/reference/rest/decision-definition/get-query/) method.", + "parameters": [ + { + "name": "decisionDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition id." + }, + { + "name": "decisionDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition names that the parameter is a substring of." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "deployedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the decision definition belongs to.\nOnly selects decision definitions that have been deployed after (exclusive) a specific time." + }, + { + "name": "deployedAt", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the decision definition belongs to.\nOnly selects decision definitions that have been deployed at a specific time (exact match)." + }, + { + "name": "key", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition key, i.e., the id in the DMN 1.0 XML. Exact match." + }, + { + "name": "keyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition keys that the parameter is a substring of." + }, + { + "name": "category", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition category. Exact match." + }, + { + "name": "categoryLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by decision definition categories that the parameter is a substring of." + }, + { + "name": "version", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "description": "Filter by decision definition version." + }, + { + "name": "latestVersion", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include those decision definitions that are latest versions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the decision definition resource. Exact match." + }, + { + "name": "resourceNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by names of those decision definition resources that the parameter is a substring of." + }, + { + "name": "decisionRequirementsDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the decision requirements definition this decision definition belongs to." + }, + { + "name": "decisionRequirementsDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the decision requirements definition this decision definition belongs to." + }, + { + "name": "withoutDecisionRequirementsDefinition", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include decision definitions which does not belongs to any decision requirements definition.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of `Strings`. A decision definition must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include decision definitions which belong to no tenant.\nValue can effectively only be `true`, as `false` is the default behavior." + }, + { + "name": "includeDecisionDefinitionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include decision definitions which belong to no tenant.\nCan be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "versionTag", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag." + }, + { + "name": "versionTagLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tags of those decision definition resources that the parameter is a substring of." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/count?key\u003ddish-decision\u0026version\u003d2`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}": { + "get": { + "operationId": "getDecisionDefinitionByKey", + "tags": [ + "Decision Definition" + ], + "summary": "Get Decision Definition By Key", + "description": "Retrieves the latest version of the decision definition which belongs to no tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/key/dish-decision`", + "value": { + "id": "aDecisionDefinitionId", + "key": "dish-decision", + "category": "http://camunda.org/schema/1.0/dmn", + "name": "Dish Decision", + "version": 1, + "resource": "drd-dish-decision.dmn", + "deploymentId": "c627175e-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionId": "dish:1:c633c195-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionKey": "dish", + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5 + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}/diagram": { + "get": { + "operationId": "getDecisionDefinitionDiagramByKey", + "tags": [ + "Decision Definition" + ], + "summary": "Get Diagram By Key", + "description": "Returns the diagram for the latest version of the decision definition which belongs to no tenant", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be retrieved." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The decision definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/key/{key}/evaluate": { + "post": { + "operationId": "evaluateDecisionByKey", + "tags": [ + "Decision Definition" + ], + "summary": "Evaluate By Key", + "description": "Evaluates the latest version of the decision definition which belongs to no tenant.\nThe input values of the decision have to be supplied in the request body.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be evaluated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvaluateDecisionDto" + }, + "examples": { + "example-1": { + "summary": "POST /decision-definition/key/aKey/evaluate", + "value": { + "variables": { + "amount": { + "value": 600, + "type": "Double" + }, + "invoiceCategory": { + "value": "Misc", + "type": "String" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/decision-definition/key/aKey/evaluate`", + "value": [ + { + "result": { + "value": "management", + "type": "String", + "valueInfo": null + } + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByDecisionDefinitionKey", + "tags": [ + "Decision Definition" + ], + "summary": "Update History Time to Live By Key", + "description": "Updates the latest version of the decision definition which belongs to no tenant.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definitions to change history time to live." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/decision-definition/key/aKey/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/key/{key}/tenant-id/{tenant-id}": { + "get": { + "operationId": "getDecisionDefinitionByKeyAndTenantId", + "tags": [ + "Decision Definition" + ], + "summary": "Get Decision Definition By Key And Tenant Id", + "description": "Retrieves the latest version of the decision definition for tenant", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the decision definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/key/dish-decision/tenant-id/aTenantId`", + "value": { + "id": "aDecisionDefinitionId", + "key": "dish-decision", + "category": "http://camunda.org/schema/1.0/dmn", + "name": "Dish Decision", + "version": 1, + "resource": "drd-dish-decision.dmn", + "deploymentId": "c627175e-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionId": "dish:1:c633c195-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionKey": "dish", + "tenantId": "aTenantId", + "versionTag": null, + "historyTimeToLive": 5 + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}/tenant-id/{tenant-id}/diagram": { + "get": { + "operationId": "getDecisionDefinitionDiagramByKeyAndTenant", + "tags": [ + "Decision Definition" + ], + "summary": "Get Diagram By Key And Tenant", + "description": "Returns the XML of the latest version of the decision definition for tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the decision definition belongs to." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The decision definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/key/{key}/tenant-id/{tenant-id}/evaluate": { + "post": { + "operationId": "evaluateDecisionByKeyAndTenant", + "tags": [ + "Decision Definition" + ], + "summary": "Evaluate By Key And Tenant", + "description": "Evaluates the latest version of the decision definition for tenant.\nThe input values of the decision have to be supplied in the request body.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof) to be evaluated." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the decision definition belongs to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvaluateDecisionDto" + }, + "examples": { + "example-1": { + "summary": "POST /decision-definition/key/aKey/tenand-id/aTenantId/evaluate", + "value": { + "variables": { + "amount": { + "value": 600, + "type": "Double" + }, + "invoiceCategory": { + "value": "Misc", + "type": "String" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/decision-definition/akey/aKey/tenand-id/aTenantId/evaluate`", + "value": [ + { + "result": { + "value": "management", + "type": "String", + "valueInfo": null + } + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}/tenant-id/{tenant-id}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByDecisionDefinitionKeyAndTenant", + "tags": [ + "Decision Definition" + ], + "summary": "Update History Time to Live By Key And Tenant", + "description": "Updates the latest version of the decision definition for tenant.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definitions to change history time to live." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the decision definition belongs to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/decision-definition/key/aKey/tenant-id/aTenantId/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/key/{key}/tenant-id/{tenant-id}/xml": { + "get": { + "operationId": "getDecisionDefinitionDmnXmlByKeyAndTenant", + "tags": [ + "Decision Definition" + ], + "summary": "Get XML By Key and Tenant", + "description": "Retrieves the XML of the latest version of the decision definition for tenant", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof)." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the decision definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/key/aKey/tenant-id/aTenantId/xml`", + "value": { + "id": "aDecisionDefinitionId", + "dmnXml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n \u003cdefinitions xmlns\u003d\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n id\u003d\"definitions\"\n name\u003d\"camunda\"\n namespace\u003d\"http://camunda.org/schema/1.0/dmn\"\u003e\n \u003cdecision id\u003d\"testDecision\" name\u003d\"decision\"\u003e\n \u003cdecisionTable id\u003d\"table\"\u003e\n \u003coutput id\u003d\"result\" name\u003d\"result\" \u003e\n \u003c/output\u003e\n \u003crule id\u003d\"rule\"\u003e\n \u003coutputEntry id\u003d\"output1\"\u003e\n \u003ctext\u003e\"not okay\"\u003c/text\u003e\n \u003c/outputEntry\u003e\n \u003c/rule\u003e\n \u003c/decisionTable\u003e\n \u003c/decision\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/key/{key}/xml": { + "get": { + "operationId": "getDecisionDefinitionDmnXmlByKey", + "tags": [ + "Decision Definition" + ], + "summary": "Get XML By Key", + "description": "Retrieves the XML for the latest version of the decision definition which belongs to no tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the decision definition (the latest version thereof)." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/key/aKey/xml`", + "value": { + "id": "aDecisionDefinitionId", + "dmnXml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n \u003cdefinitions xmlns\u003d\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n id\u003d\"definitions\"\n name\u003d\"camunda\"\n namespace\u003d\"http://camunda.org/schema/1.0/dmn\"\u003e\n \u003cdecision id\u003d\"testDecision\" name\u003d\"decision\"\u003e\n \u003cdecisionTable id\u003d\"table\"\u003e\n \u003coutput id\u003d\"result\" name\u003d\"result\" \u003e\n \u003c/output\u003e\n \u003crule id\u003d\"rule\"\u003e\n \u003coutputEntry id\u003d\"output1\"\u003e\n \u003ctext\u003e\"not okay\"\u003c/text\u003e\n \u003c/outputEntry\u003e\n \u003c/rule\u003e\n \u003c/decisionTable\u003e\n \u003c/decision\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/{id}": { + "get": { + "operationId": "getDecisionDefinitionById", + "tags": [ + "Decision Definition" + ], + "summary": "Get Decision Definition By Id", + "description": "Retrieves a decision definition by id, according to the `DecisionDefinition` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the decision definition to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/aDecisionDefinitionId`", + "value": { + "id": "aDecisionDefinitionId", + "key": "dish-decision", + "category": "http://camunda.org/schema/1.0/dmn", + "name": "Dish Decision", + "version": 1, + "resource": "drd-dish-decision.dmn", + "deploymentId": "c627175e-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionId": "dish:1:c633c195-41b7-11e6-b0ef-00aa004d0001", + "decisionRequirementsDefinitionKey": "dish", + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5 + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/{id}/diagram": { + "get": { + "operationId": "getDecisionDefinitionDiagram", + "tags": [ + "Decision Definition" + ], + "summary": "Get Diagram", + "description": "Retrieves the diagram of a decision definition.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The decision definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/{id}/evaluate": { + "post": { + "operationId": "evaluateDecisionById", + "tags": [ + "Decision Definition" + ], + "summary": "Evaluate By Id", + "description": "Evaluates a given decision and returns the result.\nThe input values of the decision have to be supplied in the request body.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the decision definition to be evaluated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvaluateDecisionDto" + }, + "examples": { + "example-1": { + "summary": "POST /decision-definition/aDecisionDefinitionId/evaluate", + "value": { + "variables": { + "amount": { + "value": 600, + "type": "Double" + }, + "invoiceCategory": { + "value": "Misc", + "type": "String" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/decision-definition/aDecisionDefinitionId/evaluate`", + "value": [ + { + "result": { + "value": "management", + "type": "String", + "valueInfo": null + } + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/decision-definition/{id}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByDecisionDefinitionId", + "tags": [ + "Decision Definition" + ], + "summary": "Update History Time to Live", + "description": "Updates history time to live for decision definition.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the decision definition to change history time to live." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/decision-definition/aDecisionDefinitionId/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/decision-definition/{id}/xml": { + "get": { + "operationId": "getDecisionDefinitionDmnXmlById", + "tags": [ + "Decision Definition" + ], + "summary": "Get XML By Id", + "description": "Retrieves the DMN XML of a decision definition.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the decision definition." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecisionDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/decision-definition/aDecisionDefinitionId/xml`", + "value": { + "id": "aDecisionDefinitionId", + "dmnXml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n \u003cdefinitions xmlns\u003d\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n id\u003d\"definitions\"\n name\u003d\"camunda\"\n namespace\u003d\"http://camunda.org/schema/1.0/dmn\"\u003e\n \u003cdecision id\u003d\"testDecision\" name\u003d\"decision\"\u003e\n \u003cdecisionTable id\u003d\"table\"\u003e\n \u003coutput id\u003d\"result\" name\u003d\"result\" \u003e\n \u003c/output\u003e\n \u003crule id\u003d\"rule\"\u003e\n \u003coutputEntry id\u003d\"output1\"\u003e\n \u003ctext\u003e\"not okay\"\u003c/text\u003e\n \u003c/outputEntry\u003e\n \u003c/rule\u003e\n \u003c/decisionTable\u003e\n \u003c/decision\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Decision definition with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/deployment": { + "get": { + "operationId": "getDeployments", + "tags": [ + "Deployment" + ], + "summary": "Get List", + "description": "Queries for deployments that fulfill given parameters. Parameters may be the properties of deployments,\nsuch as the id or name or a range of the deployment time. The size of the result set can be retrieved by\nusing the [Get Deployment count](https://docs.camunda.org/manual/7.15/reference/rest/deployment/get-query-count/) method.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by deployment id" + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment name. Exact match." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment name that the parameter is a substring of. The parameter can include the\nwildcard `%` to express like-strategy such as: starts with (`%`name), ends with (name`%`) or contains\n(`%`name`%`)." + }, + { + "name": "source", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment source." + }, + { + "name": "withoutSource", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Filter by the deployment source whereby source is equal to `null`." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. A deployment must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include deployments which belong to no tenant. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "includeDeploymentsWithoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Include deployments which belong to no tenant. Can be used in combination with `tenantIdIn`. Value may\nonly be `true`, as `false` is the default behavior." + }, + { + "name": "after", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to all deployments after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "before", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to all deployments before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "id", + "name", + "deploymentTime", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeploymentDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/deployment?name\u003ddeploymentName`", + "value": [ + { + "id": "someId", + "name": "deploymentName", + "source": "process application", + "tenantId": null, + "deploymentTime": "2013-04-23T13:42:43.000+0200" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`, or if an invalid operator for variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/count": { + "get": { + "operationId": "getDeploymentsCount", + "tags": [ + "Deployment" + ], + "summary": "Get List Count", + "description": "Queries for the number of deployments that fulfill given parameters. Takes the same parameters as the\n[Get Deployments](https://docs.camunda.org/manual/7.15/reference/rest/deployment/get-query/) method.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by deployment id" + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment name. Exact match." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment name that the parameter is a substring of. The parameter can include the\nwildcard `%` to express like-strategy such as: starts with (`%`name), ends with (name`%`) or contains\n(`%`name`%`)." + }, + { + "name": "source", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment source." + }, + { + "name": "withoutSource", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Filter by the deployment source whereby source is equal to `null`." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. A deployment must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include deployments which belong to no tenant. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "includeDeploymentsWithoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Include deployments which belong to no tenant. Can be used in combination with `tenantIdIn`. Value may\nonly be `true`, as `false` is the default behavior." + }, + { + "name": "after", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to all deployments after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "before", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to all deployments before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "GET `/deployment/count?name\u003ddeploymentName`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example, if an invalid operator for variable\ncomparison is used. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/create": { + "post": { + "operationId": "createDeployment", + "tags": [ + "Deployment" + ], + "summary": "Create", + "description": "Creates a deployment.\n\n**Security Consideration**\n\nDeployments can contain custom code in form of scripts or EL expressions to customize process behavior.\nThis may be abused for remote execution of arbitrary code.", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormDeploymentDto" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentWithDefinitionsDto" + }, + "examples": { + "example-1": { + "summary": "POST `/deployment/create`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:38080/rest-test/deployment/aDeploymentId", + "rel": "self" + } + ], + "id": "aDeploymentId", + "name": "aName", + "source": "process application", + "deploymentTime": "2013-01-23T13:59:43.000+0200", + "tenantId": null, + "deployedProcessDefinitions": { + "aProcDefId": { + "id": "aProcDefId", + "key": "aKey", + "category": "aCategory", + "description": "aDescription", + "name": "aName", + "version": 42, + "resource": "aResourceName", + "deploymentId": "aDeploymentId", + "diagram": "aResourceName.png", + "suspended": true, + "tenantId": null, + "versionTag": null + } + }, + "deployedCaseDefinitions": null, + "deployedDecisionDefinitions": null, + "deployedDecisionRequirementsDefinitions": null + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParseExceptionDto" + }, + "examples": { + "example-1": { + "summary": "GET /deployment?name\u003ddeploymentName", + "value": { + "type": "ParseException", + "message": "ENGINE-09005 Could not parse BPMN process. Errors: Exclusive Gateway \u0027ExclusiveGateway_1\u0027 has outgoing sequence flow \u0027SequenceFlow_0\u0027 without condition which is not the default flow.", + "details": { + "invoice.bpmn": { + "errors": [ + { + "message": "Exclusive Gateway \u0027ExclusiveGateway_1\u0027 has outgoing sequence flow \u0027SequenceFlow_0\u0027 without condition which is not the default flow.", + "line": 77, + "column": 15, + "mainBpmnElementId": "ExclusiveGateway_1", + "bpmnElementIds": [ + "ExclusiveGateway_1", + "SequenceFlow_0" + ] + } + ], + "warnings": [ + { + "message": "It is not recommended to use a cancelling boundary timer event with a time cycle.", + "line": 87, + "column": 20, + "mainBpmnElementId": "BoundaryEvent_1", + "bpmnElementIds": [ + "BoundaryEvent_1" + ] + } + ] + } + } + } + } + } + } + }, + "description": "Bad Request. In case one of the bpmn resources cannot be parsed.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#parse-exceptions) for\nthe error response format." + } + } + } + }, + "/deployment/{id}": { + "delete": { + "operationId": "deleteDeployment", + "tags": [ + "Deployment" + ], + "summary": "Delete", + "description": "Deletes a deployment by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment to be deleted." + }, + { + "name": "cascade", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if all process instances, historic process instances and jobs for this deployment\nshould be deleted." + }, + { + "name": "skipCustomListeners", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if only the built-in ExecutionListeners should be notified with the end event." + }, + { + "name": "skipIoMappings", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if all input/output mappings should not be invoked." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "A Deployment with the provided id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getDeployment", + "tags": [ + "Deployment" + ], + "summary": "Get", + "description": "Retrieves a deployment by id, according to the `Deployment` interface of the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentDto" + }, + "examples": { + "example-1": { + "summary": "GET `/deployments/someDeploymentId`", + "value": { + "id": "someDeploymentId", + "name": "deploymentName", + "source": "process application", + "deploymentTime": "2013-04-23T13:42:43.000+0200" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Deployment with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/{id}/redeploy": { + "post": { + "operationId": "redeploy", + "tags": [ + "Deployment" + ], + "summary": "Redeploy", + "description": "Re-deploys an existing deployment.\n\nThe deployment resources to re-deploy can be restricted by using the properties `resourceIds` or\n`resourceNames`. If no deployment resources to re-deploy are passed then all existing resources of the\ngiven deployment are re-deployed.\n\n**Warning**: Deployments can contain custom code in form of scripts or EL expressions to customize\nprocess behavior. This may be abused for remote execution of arbitrary code. See the section on\n[security considerations for custom code](https://docs.camunda.org/manual/7.15/user-guide/process-engine/securing-custom-code/) in\nthe user guide for details.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment to re-deploy." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedeploymentDto" + }, + "examples": { + "example-1": { + "summary": "POST `/deployment/anDeploymentId/redeploy`", + "value": { + "resourceIds": [ + "aResourceId" + ], + "resourceNames": [ + "aResourceName" + ], + "source": "cockpit" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentWithDefinitionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:38080/rest-test/deployment/aDeploymentId", + "rel": "self" + } + ], + "id": "aDeploymentId", + "name": "aName", + "source": "cockpit", + "deploymentTime": "2015-10-13T13:59:43.000+0200", + "tenantId": null, + "deployedProcessDefinitions": { + "aProcDefId": { + "id": "aProcDefId", + "key": "aKey", + "category": "aCategory", + "description": "aDescription", + "name": "aName", + "version": 42, + "resource": "aResourceName", + "deploymentId": "aDeploymentId", + "diagram": "aResourceName.png", + "suspended": true, + "tenantId": null, + "versionTag": null + } + }, + "deployedCaseDefinitions": null, + "deployedDecisionDefinitions": null, + "deployedDecisionRequirementsDefinitions": null + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Deployment or a deployment resource for the given deployment does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/{id}/resources": { + "get": { + "operationId": "getDeploymentResources", + "tags": [ + "Deployment" + ], + "summary": "Get Resources", + "description": "Retrieves all deployment resources of a given deployment.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment to retrieve the deployment resources for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeploymentResourceDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/deployment/anDeploymentId/resources`", + "value": [ + { + "id": "anResourceId", + "name": "anResourceName", + "deploymentId": "anDeploymentId" + }, + { + "id": "anotherResourceId", + "name": "anotherResourceName", + "deploymentId": "anDeploymentId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Deployment resources for the given deployment do not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/{id}/resources/{resourceId}": { + "get": { + "operationId": "getDeploymentResource", + "tags": [ + "Deployment" + ], + "summary": "Get Resource", + "description": "Retrieves a deployment resource by resource id for the given deployment.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment" + }, + { + "name": "resourceId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment resource" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentResourceDto" + }, + "examples": { + "example-1": { + "summary": "GET `/deployments/someDeploymentId/resources/someResourceId`", + "value": { + "id": "someResourceId", + "name": "someResourceName", + "deploymentId": "someDeploymentId" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Deployment Resource with given resource id or deployment id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/deployment/{id}/resources/{resourceId}/data": { + "get": { + "operationId": "getDeploymentResourceData", + "tags": [ + "Deployment" + ], + "summary": "Get Resource (Binary)", + "description": "Retrieves the binary content of a deployment resource for the given deployment by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment." + }, + { + "name": "resourceId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the deployment resource." + } + ], + "responses": { + "200": { + "description": "Request successful. The media type of the response depends on the filename.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For files without any MIME type information, a byte stream is returned." + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information are returned as the saved type. For example, a\n `process.bpmn` resource will have the media type `application/xml`." + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Deployment Resource with given resource id or deployment id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/engine": { + "get": { + "operationId": "getProcessEngineNames", + "tags": [ + "Engine" + ], + "summary": "Get List", + "description": "Retrieves the names of all process engines available on your platform.\n**Note**: You cannot prepend `/engine/{name}` to this method.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessEngineDto" + } + }, + "examples": { + "example-1": { + "value": [ + { + "name": "default" + }, + { + "name": "anotherEngineName" + } + ] + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/event-subscription": { + "get": { + "operationId": "getEventSubscriptions", + "tags": [ + "Event Subscription" + ], + "summary": "Get List", + "description": "Queries for event subscriptions that fulfill given parameters.\nThe size of the result set can be retrieved by using the\n[Get Event Subscriptions count](https://docs.camunda.org/manual/7.15/reference/rest/event-subscription/get-query-count/) method.", + "parameters": [ + { + "name": "eventSubscriptionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscription with the given id." + }, + { + "name": "eventName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions for events with the given name." + }, + { + "name": "eventType", + "in": "query", + "schema": { + "enum": [ + "message", + "signal", + "compensate", + "conditional" + ], + "type": "string" + }, + "description": "Only select subscriptions for events with the given type.\nValid values: `message`, `signal`, `compensate` and `conditional`." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to an execution with the given id." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to a process instance with the given id." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to an activity with the given id." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nOnly select subscriptions that belong to one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select subscriptions which have no tenant id.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "includeEventSubscriptionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Select event subscriptions which have no tenant id.\nCan be used in combination with tenantIdIn parameter.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "created", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventSubscriptionDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/event-subscription?eventType\u003dmessage\u0026sortBy\u003dcreated\u0026sortOrder\u003ddesc`", + "value": [ + { + "id": "anId", + "eventType": "message", + "eventName": "anEventName", + "executionId": "anExecutionId", + "processInstanceId": "aProcessInstanceId", + "activityId": "anActivityId", + "createdDate": "2020-04-20T15:23:12.229+0200", + "tenantId": null + }, + { + "id": "anotherId", + "eventType": "message", + "eventName": "anotherEventName", + "executionId": "anotherExecutionId", + "processInstanceId": "anotherProcessInstanceId", + "activityId": "anotherActivityId", + "createdDate": "2020-04-20T15:20:12.229+0200", + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid,\nfor example if a `sortOrder` parameter is supplied, but no `sortBy`.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/event-subscription/count": { + "get": { + "operationId": "getEventSubscriptionsCount", + "tags": [ + "Event Subscription" + ], + "summary": "Get List Count", + "description": "Queries for the number of event subscriptions that fulfill given parameters.\nTakes the same parameters as the\n[Get Event Subscriptions](https://docs.camunda.org/manual/7.15/reference/rest/event-subscription/get-query/) method.", + "parameters": [ + { + "name": "eventSubscriptionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscription with the given id." + }, + { + "name": "eventName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions for events with the given name." + }, + { + "name": "eventType", + "in": "query", + "schema": { + "enum": [ + "message", + "signal", + "compensate", + "conditional" + ], + "type": "string" + }, + "description": "Only select subscriptions for events with the given type.\nValid values: `message`, `signal`, `compensate` and `conditional`." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to an execution with the given id." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to a process instance with the given id." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select subscriptions that belong to an activity with the given id." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nOnly select subscriptions that belong to one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select subscriptions which have no tenant id.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "includeEventSubscriptionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Select event subscriptions which have no tenant id.\nCan be used in combination with tenantIdIn parameter.\nValue may only be `true`, as `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "GET `/event-subscription/count`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution": { + "get": { + "operationId": "getExecutions", + "tags": [ + "Execution" + ], + "summary": "Get Executions", + "description": "Queries for the executions that fulfill given parameters.\nParameters may be static as well as dynamic runtime properties of\nexecutions.\nThe size of the result set can be retrieved by using the [Get\nExecution Count](https://docs.camunda.org/manual/7.15/reference/rest/execution/get-query-count/)\nmethod.", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the business key of the process instances the executions belong to." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the process definition the executions run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the executions run on." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process instance the execution belongs to." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the activity the execution currently executes." + }, + { + "name": "signalEventSubscriptionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only those executions that expect a signal of the given name." + }, + { + "name": "messageEventSubscriptionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only those executions that expect a message of the given name." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type. See the [User Guide](/manual/develop/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. An execution must have one of the given\ntenant ids." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include executions that have variables with certain values.\nVariable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` -\ngreater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or\nequal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "processVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include executions that belong to a process instance with variables with certain\nvalues.\nVariable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableName** and **variablename** are\ntreated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableValue** and **variablevalue** are\ntreated as equal." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "instanceId", + "definitionKey", + "definitionId", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExecutionDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/execution?variables\u003dmyVariable_eq_camunda`", + "value": [ + { + "id": "anId", + "processInstanceId": "aProcInstId", + "ended": false, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryExecutions", + "tags": [ + "Execution" + ], + "summary": "Get Executions (POST)", + "description": "Queries for executions that fulfill given parameters through a JSON object.\nThis method is slightly more powerful than the [Get\nExecutions](https://docs.camunda.org/manual/7.15/reference/rest/execution/get-query/) method\nbecause it allows\nto filter by multiple instance and execution variables of types\n`String`, `Number` or `Boolean`.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutionQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution`", + "value": { + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ], + "processDefinitionId": "aProcessDefinitionId", + "sorting": [ + { + "sortBy": "definitionKey", + "sortOrder": "asc" + }, + { + "sortBy": "instanceId", + "sortOrder": "desc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExecutionDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "POST `/execution`", + "value": [ + { + "id": "anId", + "processInstanceId": "aProcInstId", + "ended": false, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/count": { + "get": { + "operationId": "getExecutionsCount", + "tags": [ + "Execution" + ], + "summary": "Get Execution Count", + "description": "Queries for the number of executions that fulfill given parameters.\nTakes the same parameters as the [Get\nExecutions](https://docs.camunda.org/manual/7.15/reference/rest/execution/get-query/) method.", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the business key of the process instances the executions belong to." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the process definition the executions run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the executions run on." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process instance the execution belongs to." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the activity the execution currently executes." + }, + { + "name": "signalEventSubscriptionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only those executions that expect a signal of the given name." + }, + { + "name": "messageEventSubscriptionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only those executions that expect a message of the given name." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type. See the [User Guide](/manual/develop/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. An execution must have one of the given\ntenant ids." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include executions that have variables with certain values.\nVariable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` -\ngreater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or\nequal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "processVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include executions that belong to a process instance with variables with certain\nvalues.\nVariable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableName** and **variablename** are\ntreated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableValue** and **variablevalue** are\ntreated as equal." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "GET `/execution/count?variables\u003dmyVariable_eq_camunda`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryExecutionsCount", + "tags": [ + "Execution" + ], + "summary": "Get Execution Count (POST)", + "description": "Queries for the number of executions that fulfill given parameters. This method\ntakes the same message body as the [Get Executions\nPOST](https://docs.camunda.org/manual/7.15/reference/rest/execution/post-query/) method and\ntherefore it is slightly more powerful than the [Get Execution\nCount](https://docs.camunda.org/manual/7.15/reference/rest/execution/get-query-count/) method.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutionQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution/count`", + "value": { + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ], + "processDefinitionId": "aProcessDefinitionId" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "POST `/execution/count`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/{id}": { + "get": { + "operationId": "getExecution", + "tags": [ + "Execution" + ], + "summary": "Get Execution", + "description": "Retrieves an execution by id, according to the `Execution` interface in the\nengine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutionDto" + }, + "examples": { + "example-1": { + "description": "GET `/execution/anExecutionId`", + "value": { + "id": "anExecutionId", + "processInstanceId": "aProcInstId", + "ended": false, + "tenantId": null + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Execution with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/{id}/create-incident": { + "post": { + "operationId": "createIncident", + "tags": [ + "Execution" + ], + "summary": "Create Incident", + "description": "Creates a custom incident with given properties.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to create a new incident for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateIncidentDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution/anExecutionId/create-incident`", + "value": { + "incidentType": "aType", + "configuration": "aConfiguration" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "POST `/execution/anExecutionId/create-incident`", + "value": { + "id": "anIncidentId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "executionId": "anExecutionId", + "incidentTimestamp": "2014-03-01T08:00:00.000+0200", + "incidentType": "failedJob", + "activityId": "serviceTask", + "failedActivityId": "serviceTask", + "causeIncidentId": "aCauseIncidentId", + "rootCauseIncidentId": "aRootCauseIncidentId", + "configuration": "aConfiguration", + "tenantId": null, + "incidentMessage": "anIncidentMessage", + "jobDefinitionId": "aJobDefinitionId" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the incident type is null, the execution does not exist or the\nexecution is not related to any activity." + } + } + } + }, + "/execution/{id}/localVariables": { + "get": { + "operationId": "getLocalExecutionVariables", + "tags": [ + "Execution" + ], + "summary": "Get Local Execution Variables", + "description": "Retrieves all variables of a given execution by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to retrieve the variables from." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically\nvariables that store custom Java objects) should be deserialized\non server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on\nserver side and transformed to JSON using\n[Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean\nproperty introspection feature. Note that this requires the Java\nclasses of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its\nserialized format. For example, a variable that is serialized as\nXML will be returned as a JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of\nbackward compatibility, we recommend setting this parameter to\n`false` when developing web applications that are independent of\nthe Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/execution/anExecutionId/localVariables`", + "description": "GET `/execution/anExecutionId/localVariables`", + "value": { + "aVariableKey": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + }, + "example-2": { + "summary": "GET `/execution/anExecutionId/localVariables?deserializeValues\u003dfalse`", + "description": "GET `/execution/anExecutionId/localVariables?deserializeValues\u003dfalse`", + "value": { + "aVariableKey": { + "value": "\u003cmyObj\u003e\u003cprop1\u003ea\u003c/prop1\u003e\u003cprop2\u003eb\u003c/prop2\u003e\u003c/myObj\u003e", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "description": "Request successful. Returns A JSON object of variables key-value pairs. Each key is a variable name and each value a VariableValueDto" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Execution with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "modifyLocalExecutionVariables", + "tags": [ + "Execution" + ], + "summary": "Update/Delete Local Execution Variables", + "description": "Updates or deletes the variables in the context of an execution by id. The updates\ndo not propagate upwards in the execution hierarchy.\nUpdates precede deletions. So, if a variable is updated AND deleted,\nthe deletion overrides the update.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to set variables for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchVariablesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution/anExecutionId/localVariables`", + "value": { + "modifications": { + "aVariable": { + "value": "aValue", + "type": "String" + }, + "anotherVariable": { + "value": 42, + "type": "Integer" + } + }, + "deletions": [ + "aThirdVariable", + "FourthVariable" + ] + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-\nhandling) for the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Update or delete could not be executed, for example because the execution does not\nexist." + } + } + } + }, + "/execution/{id}/localVariables/{varName}": { + "delete": { + "operationId": "deleteLocalExecutionVariable", + "tags": [ + "Execution" + ], + "summary": "Delete Local Execution Variable", + "description": "Deletes a variable in the context of a given execution by id. Deletion does not\npropagate upwards in the execution hierarchy.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to delete the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to delete." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + } + } + }, + "get": { + "operationId": "getLocalExecutionVariable", + "tags": [ + "Execution" + ], + "summary": "Get Local Execution Variable", + "description": "Retrieves a variable from the context of a given execution by id. Does not traverse\nthe parent execution hierarchy.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to retrieve the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to get." + }, + { + "name": "deserializeValue", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically\nvariables that store custom Java objects) should be deserialized\non server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on\nserver side and transformed to JSON using\n[Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean\nproperty introspection feature. Note that this requires the Java\nclasses of the variable value to be on the REST API\u0027s classpath.\nIf set to `false`, a serializable variable will be returned in its\nserialized format. For example, a variable that is serialized as\nXML will be returned as a JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of\nbackward compatibility, we recommend setting this parameter to\n`false` when developing web applications that are independent of\nthe Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "GET `/execution/anExecutionId/localVariables/aVarName`", + "description": "GET `/execution/anExecutionId/localVariables/aVarName`", + "value": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + }, + "example-2": { + "summary": "GET `/execution/anExecutionId/localVariables/aVarName?deserializeValue\u003dfalse`", + "description": "GET `/execution/anExecutionId/localVariables/aVarName?deserializeValue\u003dfalse`", + "value": { + "value": "\u003cmyobj\u003e\u003cprop1\u003ea\u003c/prop1\u003e\u003cprop2\u003eb\u003c/prop2\u003e\u003c/myobj\u003e", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "putLocalExecutionVariable", + "tags": [ + "Execution" + ], + "summary": "Put Local Execution Variable", + "description": "Sets a variable in the context of a given execution by id. Update does not\npropagate upwards in the execution hierarchy.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to set the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to set." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/execution/anExecutionId/localVariables/aVarName`", + "value": { + "value": "someValue", + "type": "String" + } + }, + "example-2": { + "summary": "PUT `/execution/anExecutionId/localVariables/aVarName`", + "value": { + "value": "\u003cmyobj\u003e\u003cprop1\u003ea\u003c/prop1\u003e\u003cprop2\u003eb\u003c/prop2\u003e\u003c/myobj\u003e", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-\nhandling) for the error response format." + } + } + } + }, + "/execution/{id}/localVariables/{varName}/data": { + "get": { + "operationId": "getLocalExecutionVariableBinary", + "tags": [ + "Execution" + ], + "summary": "Get Local Execution Variable (Binary)", + "description": "Retrieves a binary variable from the context of a given execution by id. Does not\ntraverse the parent execution hierarchy. Applicable for byte array and\nfile variables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to retrieve the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to get." + } + ], + "responses": { + "200": { + "description": "Request successful.\n For binary variables or files without any MIME type information, a byte stream is returned.\n File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For binary variables or files without any MIME type information, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "binary variable: Status 200", + "value": "Content-Type: application/octet-stream" + } + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "binary", + "description": "File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set." + }, + "examples": { + "example-1": { + "summary": "file variable: Status 200", + "value": "Content-Type: text/plain; charset\u003dUTF-8. Content-Disposition: attachment; filename\u003d\"someFile.txt\"" + } + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable instance with given id exists but is not a binary variable. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable instance with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "setLocalExecutionVariableBinary", + "tags": [ + "Execution" + ], + "summary": "Post Local Execution Variable (Binary)", + "description": "Sets the serialized value for a binary variable or the binary value for a file\nvariable in the context of a given execution by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to set the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to set." + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormVariableBinaryDto" + }, + "examples": { + "example-1": { + "summary": "Post binary content of a byte array variable", + "description": "POST /execution/anExecutionId/localVariables/aVarName/data", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"unspecified\"\n Content-Type: application/octet-stream\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n Bytes\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y--\n ```\n " + }, + "example-2": { + "summary": "Post the JSON serialization of a Java Class **(deprecated)**", + "description": "POST /execution/anExecutionId/localVariables/aVarName/data", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"\n Content-Type: application/json; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n [\"foo\", \"bar\"]\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"type\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n java.util.ArrayList\u003cjava.lang.Object\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y--\n ```\n " + }, + "example-3": { + "summary": "Post a text file", + "description": "POST /execution/anExecutionId/localVariables/aVarName/data", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"myFile.txt\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n File\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y--\n ```\n " + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if no filename is set. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/{id}/messageSubscriptions/{messageName}": { + "get": { + "operationId": "getMessageEventSubscription", + "tags": [ + "Execution" + ], + "summary": "Get Message Event Subscription", + "description": "Retrieves a message event subscription for a given execution by id and a message\nname.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution that holds the subscription." + }, + { + "name": "messageName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the message that the subscription corresponds to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscriptionDto" + }, + "examples": { + "example-1": { + "description": "GET `/execution/anExecutionId/messageSubscriptions/someMessage`", + "value": { + "id": "anEventSubscriptionId", + "eventType": "message", + "eventName": "anEvent", + "executionId": "anExecutionId", + "processInstanceId": "aProcInstId", + "activityId": "anActivity", + "tenantId": null, + "createdDate": "2013-01-23T13:59:43.000+0200" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "A message subscription for the given name and execution does not exist.\nThis may either mean that the execution does not exist, or that\nit is not subscribed on such a message.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/{id}/messageSubscriptions/{messageName}/trigger": { + "post": { + "operationId": "triggerEvent", + "tags": [ + "Execution" + ], + "summary": "Trigger Message Event Subscription", + "description": "Delivers a message to a specific execution by id, to trigger an existing message\nevent subscription. Inject process variables as the message\u0027s\npayload.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to submit the message to." + }, + { + "name": "messageName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the message that the addressed subscription corresponds to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutionTriggerDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution/anExecutionId/messageSubscriptions/someMessage/trigger`", + "value": { + "variables": { + "aVariable": { + "value": true, + "type": "Boolean" + }, + "anotherVariable": { + "value": 42, + "type": "Integer" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The addressed execution has no pending message subscriptions for the given message.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/execution/{id}/signal": { + "post": { + "operationId": "signalExecution", + "tags": [ + "Execution" + ], + "summary": "Trigger Execution", + "description": "Signals an execution by id. Can for example be used to explicitly skip user tasks\nor signal asynchronous continuations.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the execution to signal." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutionTriggerDto" + }, + "examples": { + "example-1": { + "summary": "POST `/execution/{id}/signal`", + "value": { + "variables": { + "myVariable": { + "value": "camunda", + "type": "String" + }, + "mySecondVariable": { + "value": 124, + "type": "Integer" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/external-task": { + "get": { + "operationId": "getExternalTasks", + "tags": [ + "External Task" + ], + "summary": "Get List", + "description": "Queries for the external tasks that fulfill given parameters. Parameters may be static as well as dynamic\nruntime properties of executions. The size of the result set can be retrieved by using the\n[Get External Task Count](https://docs.camunda.org/manual/7.15/reference/rest/external-task/get-query-count/) method.", + "parameters": [ + { + "name": "externalTaskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by an external task\u0027s id." + }, + { + "name": "externalTaskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the comma-separated list of external task ids." + }, + { + "name": "topicName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by an external task topic." + }, + { + "name": "workerId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the worker that the task was most recently locked by." + }, + { + "name": "locked", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently locked (i.e., they have a lock time and it has not expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "notLocked", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently not locked (i.e., they have no lock or it has expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "withRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that have a positive (\u0026gt; 0) number of retries (or `null`). Value may only be\n`true`, as `false` matches any external task." + }, + { + "name": "noRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that have 0 retries. Value may only be `true`, as `false` matches any\nexternal task." + }, + { + "name": "lockExpirationAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to external tasks that have a lock that expires after a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "lockExpirationBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to external tasks that have a lock that expires before a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the activity that an external task is created for." + }, + { + "name": "activityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the comma-separated list of ids of the activities that an external task is created for." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the execution that an external task belongs to." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process instance that an external task belongs to." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process instance ids that an external task may belong to." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process definition that an external task belongs to." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nAn external task must have one of the given tenant ids." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active tasks. Value may only be `true`, as `false` matches any external task." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended tasks. Value may only be `true`, as `false` matches any external task." + }, + { + "name": "priorityHigherThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority higher than or equal to the given value.\nValue must be a valid `long` value." + }, + { + "name": "priorityLowerThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority lower than or equal to the given value.\nValue must be a valid `long` value." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "id", + "lockExpirationTime", + "processInstanceId", + "processDefinitionId", + "processDefinitionKey", + "taskPriority", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalTaskDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /external-task?topicName\u003daTopic", + "value": [ + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "suspended": false, + "workerId": "aWorkerId", + "topicName": "aTopic", + "priority": 9, + "businessKey": "aBusinessKey" + }, + { + "activityId": "anotherActivityId", + "activityInstanceId": "anotherActivityInstanceId", + "errorMessage": "anotherErrorMessage", + "executionId": "anotherExecutionId", + "id": "anotherExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "anotherProcessDefinitionId", + "processDefinitionKey": "anotherProcessDefinitionKey", + "processInstanceId": "anotherProcessInstanceId", + "tenantId": null, + "retries": 1, + "suspended": false, + "workerId": "aWorkerId", + "topicName": "aTopic", + "priority": 3, + "businessKey": "aBusinessKey" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryExternalTasks", + "tags": [ + "External Task" + ], + "summary": "Get List (POST)", + "description": "Queries for external tasks that fulfill given parameters in the form of a JSON object.\n\nThis method is slightly more powerful than the\n[Get External Tasks](https://docs.camunda.org/manual/7.15/reference/rest/external-task/get-query/) method because it allows to\nspecify a hierarchical result sorting.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExternalTaskQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task", + "value": { + "processDefinitionId": "aProcessDefinitionId", + "sorting": [ + { + "sortBy": "processDefinitionKey", + "sortOrder": "asc" + }, + { + "sortBy": "lockExpirationTime", + "sortOrder": "desc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalTaskDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": [ + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "suspended": false, + "workerId": "aWorkerId", + "topicName": "aTopic", + "priority": 9, + "businessKey": "aBusinessKey" + }, + { + "activityId": "anotherActivityId", + "activityInstanceId": "anotherActivityInstanceId", + "errorMessage": "anotherErrorMessage", + "executionId": "anotherExecutionId", + "id": "anotherExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "anotherProcessDefinitionKey", + "processInstanceId": "anotherProcessInstanceId", + "tenantId": null, + "retries": 1, + "suspended": false, + "workerId": "aWorkerId", + "topicName": "aTopic", + "priority": 3, + "businessKey": "aBusinessKey" + } + ] + } + } + } + }, + "description": "Request successful. The Response is a JSON array of external task objects." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/count": { + "get": { + "operationId": "getExternalTasksCount", + "tags": [ + "External Task" + ], + "summary": "Get List Count", + "description": "Queries for the number of external tasks that fulfill given parameters. Takes the same parameters as the\n[Get External Tasks](https://docs.camunda.org/manual/7.15/reference/rest/external-task/get-query/) method.", + "parameters": [ + { + "name": "externalTaskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by an external task\u0027s id." + }, + { + "name": "externalTaskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the comma-separated list of external task ids." + }, + { + "name": "topicName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by an external task topic." + }, + { + "name": "workerId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the worker that the task was most recently locked by." + }, + { + "name": "locked", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently locked (i.e., they have a lock time and it has not expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "notLocked", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently not locked (i.e., they have no lock or it has expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "withRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that have a positive (\u0026gt; 0) number of retries (or `null`). Value may only be\n`true`, as `false` matches any external task." + }, + { + "name": "noRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that have 0 retries. Value may only be `true`, as `false` matches any\nexternal task." + }, + { + "name": "lockExpirationAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to external tasks that have a lock that expires after a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "lockExpirationBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to external tasks that have a lock that expires before a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the activity that an external task is created for." + }, + { + "name": "activityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the comma-separated list of ids of the activities that an external task is created for." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the execution that an external task belongs to." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process instance that an external task belongs to." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process instance ids that an external task may belong to." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process definition that an external task belongs to." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nAn external task must have one of the given tenant ids." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active tasks. Value may only be `true`, as `false` matches any external task." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended tasks. Value may only be `true`, as `false` matches any external task." + }, + { + "name": "priorityHigherThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority higher than or equal to the given value.\nValue must be a valid `long` value." + }, + { + "name": "priorityLowerThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority lower than or equal to the given value.\nValue must be a valid `long` value." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "GET /external-task/count?topicName\u003daTopic", + "value": { + "count": 42 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryExternalTasksCount", + "tags": [ + "External Task" + ], + "summary": "Get List Count (POST)", + "description": "Queries for the number of external tasks that fulfill given parameters. This method takes the same message\nbody as the [Get External Tasks (POST)](https://docs.camunda.org/manual/7.15/reference/rest/external-task/post-query/) method.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExternalTaskQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/count", + "value": { + "topicName": "aTopicName", + "withRetriesLeft": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/fetchAndLock": { + "post": { + "operationId": "fetchAndLock", + "tags": [ + "External Task" + ], + "summary": "Fetch and Lock", + "description": "Fetches and locks a specific number of external tasks for execution by a worker. Query can be restricted\nto specific task topics and for each task topic an individual lock time can be provided.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchExternalTasksDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/fetchAndLock (1)", + "description": "Request with variable filtering", + "value": { + "workerId": "aWorkerId", + "maxTasks": 2, + "usePriority": true, + "topics": [ + { + "topicName": "createOrder", + "lockDuration": 10000, + "variables": [ + "orderId" + ] + } + ] + } + }, + "example-2": { + "summary": "POST /external-task/fetchAndLock (2)", + "description": "Request with all variables included", + "value": { + "workerId": "aWorkerId", + "maxTasks": 2, + "usePriority": true, + "topics": [ + { + "topicName": "createOrder", + "lockDuration": 10000, + "processDefinitionId": "aProcessDefinitionId", + "tenantIdIn": "tenantOne" + } + ] + } + }, + "example-3": { + "summary": "POST /external-task/fetchAndLock (3)", + "description": "Request with includeExtensionProperties", + "value": { + "workerId": "aWorkerId", + "maxTasks": 1, + "usePriority": true, + "topics": [ + { + "topicName": "createOrder", + "lockDuration": 10000, + "includeExtensionProperties": true + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LockedExternalTaskDto" + } + }, + "examples": { + "example-1": { + "summary": "POST /external-task/fetchAndLock (1)", + "description": "Request with variable filtering", + "value": [ + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "errorDetails": "anErrorDetails", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "workerId": "aWorkerId", + "priority": 4, + "topicName": "createOrder", + "variables": { + "orderId": { + "type": "String", + "value": "1234", + "valueInfo": {} + } + } + }, + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "errorDetails": "anotherErrorDetails", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "workerId": "aWorkerId", + "priority": 0, + "topicName": "createOrder", + "variables": { + "orderId": { + "type": "String", + "value": "3456", + "valueInfo": {} + } + } + } + ] + }, + "example-2": { + "summary": "POST /external-task/fetchAndLock (2)", + "description": "Request with all variables included", + "value": [ + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "errorDetails": "anErrorDetails", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.00+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": "tenantOne", + "retries": 3, + "workerId": "aWorkerId", + "priority": 4, + "topicName": "createOrder", + "businessKey": "aBusinessKey", + "variables": { + "orderId": { + "type": "String", + "value": "1234", + "valueInfo": {} + } + } + }, + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "errorDetails": "anotherErrorDetails", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "workerId": "aWorkerId", + "priority": 0, + "topicName": "createOrder", + "businessKey": "aBusinessKey", + "variables": { + "orderId": { + "type": "String", + "value": "3456", + "valueInfo": {} + } + } + } + ] + }, + "example-3": { + "summary": "POST /external-task/fetchAndLock (3)", + "description": "Request with includeExtensionProperties", + "value": [ + { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "errorDetails": "anErrorDetails", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "retries": null, + "suspended": false, + "workerId": "aWorkerId", + "topicName": "createOrder", + "tenantId": null, + "variables": {}, + "priority": 0, + "businessKey": "default", + "extensionProperties": { + "property2": "value2", + "property1": "value1" + } + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/retries": { + "put": { + "operationId": "setExternalTaskRetries", + "tags": [ + "External Task" + ], + "summary": "Set Retries Sync", + "description": "Sets the number of retries left to execute external tasks by id synchronously. If retries are set to 0, \nan incident is created.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetRetriesForExternalTasksDto" + }, + "examples": { + "example-1": { + "summary": "PUT /external-task/retries", + "value": { + "retries": 123, + "externalTaskIds": [ + "anExternalTask", + "anotherExternalTask" + ] + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case the number of retries is negative or null, an exception of type `InvalidRequestException` is\nreturned. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task, \ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/retries-async": { + "post": { + "operationId": "setExternalTaskRetriesAsyncOperation", + "tags": [ + "External Task" + ], + "summary": "Set Retries Async", + "description": "Sets the number of retries left to execute external tasks by id asynchronously. If retries are set to 0,\nan incident is created.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetRetriesForExternalTasksDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/retries-async", + "value": { + "retries": 123, + "externalTaskIds": [ + "anExternalTask", + "anotherExternalTask" + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If neither externalTaskIds nor externalTaskQuery are present or externalTaskIds contains null value or \nthe number of retries is negative or null, an exception of type `InvalidRequestException` is returned.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task, \ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/topic-names": { + "get": { + "operationId": "getTopicNames", + "tags": [ + "External Task" + ], + "summary": "Get External Task Topic Names", + "description": "Queries for distinct topic names of external tasks that fulfill given parameters.\nQuery can be restricted to only tasks with retries left, tasks that are locked, or tasks\nthat are unlocked. The parameters withLockedTasks and withUnlockedTasks are\nexclusive. Setting them both to true will return an empty list.\nProviding no parameters will return a list of all distinct topic names with external tasks.", + "parameters": [ + { + "name": "withLockedTasks", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently locked (i.e., they have a lock time and it has not expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "withUnlockedTasks", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that are currently not locked (i.e., they have no lock or it has expired).\nValue may only be `true`, as `false` matches any external task." + }, + { + "name": "withRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include external tasks that have a positive (\u0026gt; 0) number of retries (or `null`). Value may only be\n`true`, as `false` matches any external task." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "example-1": { + "summary": "GET /external-task/topic-names?withLockedTasks", + "value": [ + "topic-a", + "topic-b", + "topic-c" + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Returned if some of the query parameters are invalid." + } + } + } + }, + "/external-task/{id}": { + "get": { + "operationId": "getExternalTask", + "tags": [ + "External Task" + ], + "summary": "Get", + "description": "Retrieves an external task by id, corresponding to the `ExternalTask` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExternalTaskDto" + }, + "examples": { + "example-1": { + "summary": "GET /external-task/anExternalTaskId", + "value": { + "activityId": "anActivityId", + "activityInstanceId": "anActivityInstanceId", + "errorMessage": "anErrorMessage", + "executionId": "anExecutionId", + "id": "anExternalTaskId", + "lockExpirationTime": "2015-10-06T16:34:42.000+0200", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aProcessDefinitionKey", + "processInstanceId": "aProcessInstanceId", + "tenantId": null, + "retries": 3, + "suspended": false, + "workerId": "aWorkerId", + "priority": 0, + "topicName": "aTopic", + "businessKey": "aBusinessKey" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "External task with the given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/bpmnError": { + "post": { + "operationId": "handleExternalTaskBpmnError", + "tags": [ + "External Task" + ], + "summary": "Handle BPMN Error", + "description": "Reports a business error in the context of a running external task by id. The error code must be specified\nto identify the BPMN error handler.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task in which context a BPMN error is reported." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExternalTaskBpmnError" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/anId/bpmnError", + "value": { + "workerId": "aWorker", + "errorCode": "bpmn-error", + "errorMessage": "anErrorMessage", + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task\u0027s most recent lock was not acquired by the provided worker.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the corresponding process instance could not be resumed successfully.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/complete": { + "post": { + "operationId": "completeExternalTaskResource", + "tags": [ + "External Task" + ], + "summary": "Complete", + "description": "Completes an external task by id and updates process variables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to complete." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteExternalTaskDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/anId/complete", + "value": { + "workerId": "aWorker", + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + }, + "localVariables": { + "aLocalVariable": { + "value": "aStringValue" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task\u0027s most recent lock was not acquired by the provided worker. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the corresponding process instance could not be resumed successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/errorDetails": { + "get": { + "operationId": "getExternalTaskErrorDetails", + "tags": [ + "External Task" + ], + "summary": "Get Error Details", + "description": "Retrieves the error details in the context of a running external task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task for which the error details should be retrieved." + } + ], + "responses": { + "200": { + "description": "Request successful.", + "content": { + "text/plain": { + "schema": { + "type": "string", + "description": "The error details for the external task." + }, + "examples": { + "example-1": { + "value": "org.apache.ibatis.jdbc.RuntimeSqlException: org.apache.ibatis.jdbc.RuntimeSqlException: test cause\n at org.camunda.bpm.engine.test.api.externaltask.ExternalTaskServiceTest.testHandleFailureWithErrorDetails(ExternalTaskServiceTest.java:1424)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n " + } + } + } + } + }, + "204": { + "description": "Request successful. In case the external task has no error details." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "An external task with the given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/extendLock": { + "post": { + "operationId": "extendLock", + "tags": [ + "External Task" + ], + "summary": "Extend Lock", + "description": "Extends the timeout of the lock by a given amount of time.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendLockOnExternalTaskDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/anId/extendLock", + "value": { + "workerId": "anId", + "newDuration": 100000 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case the new lock duration is negative or the external task is not locked by the given worker or not \nlocked at all, an exception of type `InvalidRequestException` is returned. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/failure": { + "post": { + "operationId": "handleFailure", + "tags": [ + "External Task" + ], + "summary": "Handle Failure", + "description": "Reports a failure to execute an external task by id. A number of retries and a timeout until the task can\nbe retried can be specified. If retries are set to 0, an incident for this task is created.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task to report a failure for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExternalTaskFailureDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/anId/failure", + "value": { + "workerId": "aWorker", + "errorMessage": "Does not compute", + "retries": 3, + "retryTimeout": 60000 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task\u0027s most recent lock was not acquired by the provided worker. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the corresponding process instance could not be resumed successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/lock": { + "post": { + "operationId": "lock", + "tags": [ + "External Task" + ], + "description": "Lock an external task by a given id for a specified worker and amount of time.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LockExternalTaskDto" + }, + "examples": { + "example-1": { + "summary": "POST /external-task/anId/lock", + "value": { + "workerId": "anId", + "lockDuration": 100000 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case the lock duration is negative or the external task is already locked by\na different worker, an exception of type `InvalidRequestException` is returned. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/priority": { + "put": { + "operationId": "setExternalTaskResourcePriority", + "tags": [ + "External Task" + ], + "summary": "Set Priority", + "description": "Sets the priority of an existing external task by id. The default value of a priority is 0.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task to set the priority for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PriorityDto" + }, + "examples": { + "example-1": { + "summary": "PUT /external-task/anId/priority", + "value": { + "priority": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/retries": { + "put": { + "operationId": "setExternalTaskResourceRetries", + "tags": [ + "External Task" + ], + "summary": "Set Retries", + "description": "Sets the number of retries left to execute an external task by id. If retries are set to 0, an \nincident is created.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task to set the number of retries for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetriesDto" + }, + "examples": { + "example-1": { + "summary": "PUT /external-task/anId/retries", + "value": { + "retries": 123 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case the number of retries is negative or null, an exception of type `InvalidRequestException`\nis returned. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/external-task/{id}/unlock": { + "post": { + "operationId": "unlock", + "tags": [ + "External Task" + ], + "summary": "Unlock", + "description": "Unlocks an external task by id. Clears the task\u0027s lock expiration time and worker id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the external task to unlock." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. This could indicate a wrong task id as well as a cancelled task,\ne.g., due to a caught BPMN boundary event. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/group": { + "get": { + "operationId": "getQueryGroups", + "tags": [ + "Group" + ], + "summary": "Get List", + "description": "Queries for a list of groups using a list of parameters. The size of the result set can be retrieved\nby using the [Get Group Count](https://docs.camunda.org/manual/7.15/reference/rest/group/get-query-count) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "id", + "name", + "type" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the group." + }, + { + "name": "idIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma seperated list of group ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the group." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name that the parameter is a substring of." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the type of the group." + }, + { + "name": "member", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only retrieve groups where the given user id is a member of." + }, + { + "name": "memberOfTenant", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only retrieve groups which are members of the given tenant." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/group?name\u003dSales`", + "value": [ + { + "id": "sales", + "name": "Sales", + "type": "Organizational Unit" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy` is specified. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableGroupOperations", + "tags": [ + "Group" + ], + "summary": "Group Resource Options", + "description": "The `/group` resource supports two custom OPTIONS requests, this one for the resource as such and one for\nindividual group instances. The OPTIONS request allows checking for the set of available operations that\nthe currently authenticated user can perform on the `/group` resource. If the user can perform an operation\nor not may depend on various things, including the users authorizations to interact with this resource and\nthe internal configuration of the process engine.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/group`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/group", + "rel": "list" + }, + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/group/count", + "rel": "count" + }, + { + "method": "POST", + "href": "http://localhost:8080/engine-rest/group/create", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + }, + "post": { + "operationId": "postQueryGroups", + "tags": [ + "Group" + ], + "summary": "Get List (POST)", + "description": "Queries for a list of groups using a list of parameters.\nThe size of the result set can be retrieved by using the\n[Get Group Count (POST)](https://docs.camunda.org/manual/7.15/reference/rest/group/post-query-count/) method.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/group`", + "value": { + "name": "Sales" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "POST `/group`", + "value": [ + { + "id": "sales", + "name": "Sales", + "type": "Organizational Unit" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy` is specified. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/group/count": { + "get": { + "operationId": "getGroupCount", + "tags": [ + "Group" + ], + "summary": "Get List Count", + "description": "Queries for groups using a list of parameters and retrieves the count.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the group." + }, + { + "name": "idIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma seperated list of group ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the group." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name that the parameter is a substring of." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the type of the group." + }, + { + "name": "member", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only retrieve groups where the given user id is a member of." + }, + { + "name": "memberOfTenant", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only retrieve groups which are members of the given tenant." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/group/count?name\u003dSales`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response\nformat." + } + } + }, + "post": { + "operationId": "queryGroupCount", + "tags": [ + "Group" + ], + "summary": "Get List Count (POST)", + "description": "Queries for groups using a list of parameters and retrieves the count.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/group/count`", + "value": { + "name": "Sales" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "POST `/group/count`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response\nformat." + } + } + } + }, + "/group/create": { + "post": { + "operationId": "createGroup", + "tags": [ + "Group" + ], + "summary": "Create Group", + "description": "Creates a new group.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupDto" + }, + "examples": { + "example-1": { + "summary": "POST `/group/create`", + "value": { + "id": "sales", + "name": "Sales", + "type": "Organizational Unit" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The group could not be created due to an internal server error. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the\nerror response format." + } + } + } + }, + "/group/{id}": { + "delete": { + "operationId": "deleteGroup", + "tags": [ + "Group" + ], + "summary": "Delete Group", + "description": "Deletes a group by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group to be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Group cannot be found. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for\nthe error response format." + } + } + }, + "get": { + "operationId": "getGroup", + "tags": [ + "Group" + ], + "summary": "Get Group", + "description": "Retrieves a group by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/group/sales`", + "value": { + "id": "sales", + "name": "Sales", + "type": "Organizational Unit" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Group with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableGroupInstanceOperations", + "tags": [ + "Group" + ], + "summary": "Group Resource Instance Options", + "description": "The `/group` resource supports two custom OPTIONS requests, one for the resource as such and this one for individual group instances.\nThe OPTIONS request allows checking for the set of available operations that the currently authenticated user can perform on the\n`/group/{id}` resource instance. If the user can perform an operation or not may depend on various things, including the users authorizations\nto interact with this resource and the internal configuration of the process engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/group/aGroupId`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/group/aGroupId", + "rel": "self" + }, + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/group/aGroupId", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/group/aGroupId", + "rel": "update" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + }, + "put": { + "operationId": "updateGroup", + "tags": [ + "Group" + ], + "summary": "Update Group", + "description": "Updates a given group by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/group/sales`", + "value": { + "id": "sales", + "name": "Sales", + "type": "Organizational Unit" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. No content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the group with the requested Id cannot be found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The group could not be updated due to an internal server error.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error\nresponse format." + } + } + } + }, + "/group/{id}/members": { + "options": { + "operationId": "availableGroupMembersOperations", + "tags": [ + "Group" + ], + "summary": "Group Membership Resource Options", + "description": "The OPTIONS request allows checking for the set of available operations that the currently authenticated\nuser can perform on the resource. If the user can perform an operation or not may depend on various\nthings, including the users authorizations to interact with this resource and the internal configuration\nof the process engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "OPTIONS `/group/sales/members`", + "value": { + "links": [ + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/group/sales/members", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/group/sales/members", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/group/{id}/members/{userId}": { + "delete": { + "operationId": "deleteGroupMember", + "tags": [ + "Group" + ], + "summary": "Delete a Group Member", + "description": "Removes a member from a group.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of user to remove from the group." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "createGroupMember", + "tags": [ + "Group" + ], + "summary": "Create Group Member", + "description": "Adds a member to a group.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of user to add to the group." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an internal error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/history/activity-instance": { + "get": { + "operationId": "getHistoricActivityInstances", + "tags": [ + "Historic Activity Instance" + ], + "summary": "Get List", + "description": "Queries for historic activity instances that fulfill the given parameters.\nThe size of the result set can be retrieved by using the\n[Get Historic Activity Instance Count](https://docs.camunda.org/manual/7.15/reference/rest/history/activity-instance/get-activity-instance-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "activityInstanceId", + "instanceId", + "executionId", + "activityId", + "activityName", + "activityType", + "startTime", + "endTime", + "duration", + "definitionId", + "occurrence", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "activityInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by activity instance id." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance id." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition id." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the execution that executed the activity instance." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the activity id (according to BPMN 2.0 XML)." + }, + { + "name": "activityName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the activity name (according to BPMN 2.0 XML)." + }, + { + "name": "activityType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by activity type." + }, + { + "name": "taskAssignee", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include activity instances that are user tasks and assigned to a given user." + }, + { + "name": "finished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include finished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "unfinished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include unfinished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "canceled", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include canceled activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "completeScope", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include activity instances which completed a scope.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "startedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of ids. An activity instance must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include historic activity instances that belong to no tenant. Value may only be `true`, as `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoricActivityInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/history/activity-instance?activityType\u003duserTask\u0026taskAssignee\u003dpeter`", + "value": [ + { + "activityId": "anActivity", + "activityName": "anActivityName", + "activityType": "userTask", + "assignee": "peter", + "calledProcessInstanceId": "aHistoricCalledProcessInstanceId", + "calledCaseInstanceId": null, + "canceled": true, + "completeScope": false, + "durationInMillis": 2000, + "endTime": "2013-04-23T18:42:43.000+0200", + "executionId": "anExecutionId", + "id": "aHistoricActivityInstanceId", + "parentActivityInstanceId": "aHistoricParentActivityInstanceId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "startTime": "2013-04-23T11:20:43.000+0200", + "taskId": "aTaskId", + "tenantId": null, + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if a sortOrder parameter is supplied, but no sortBy.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "post": { + "operationId": "queryHistoricActivityInstances", + "tags": [ + "Historic Activity Instance" + ], + "summary": "Get List (POST)", + "description": "Queries for historic activity instances that fulfill the given parameters.\nThe size of the result set can be retrieved by using the\n[Get Historic Activity Instance Count](https://docs.camunda.org/manual/7.15/reference/rest/history/activity-instance/get-activity-instance-query-count/) method.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricActivityInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/activity-instance`", + "value": { + "activityType": "userTask", + "taskAssignee": "peter", + "sorting": [ + { + "sortBy": "activityId", + "sortOrder": "asc" + }, + { + "sortBy": "executionId", + "sortOrder": "desc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoricActivityInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": [ + { + "activityId": "anActivity", + "activityName": "anActivityName", + "activityType": "userTask", + "assignee": "peter", + "calledProcessInstanceId": "aHistoricCalledProcessInstanceId", + "calledCaseInstanceId": null, + "canceled": true, + "completeScope": false, + "durationInMillis": 2000, + "endTime": "2013-04-23T18:42:43.000+0200", + "executionId": "anExecutionId", + "id": "aHistoricActivityInstanceId", + "parentActivityInstanceId": "aHistoricParentActivityInstanceId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "startTime": "2013-04-23T11:20:43.000+0200", + "taskId": "aTaskId", + "tenantId": null, + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if a sortOrder parameter is supplied, but no sortBy.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/activity-instance/count": { + "get": { + "operationId": "getHistoricActivityInstancesCount", + "tags": [ + "Historic Activity Instance" + ], + "summary": "Get List Count", + "description": "Queries for the number of historic activity instances that fulfill the given parameters.\nTakes the same parameters as the [Get Historic Activity Instance](https://docs.camunda.org/manual/7.15/reference/rest/history/activity-instance/get-activity-instance-query/) method.", + "parameters": [ + { + "name": "activityInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by activity instance id." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance id." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition id." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the execution that executed the activity instance." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the activity id (according to BPMN 2.0 XML)." + }, + { + "name": "activityName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the activity name (according to BPMN 2.0 XML)." + }, + { + "name": "activityType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by activity type." + }, + { + "name": "taskAssignee", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include activity instances that are user tasks and assigned to a given user." + }, + { + "name": "finished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include finished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "unfinished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include unfinished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "canceled", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include canceled activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "completeScope", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include activity instances which completed a scope.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + { + "name": "startedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of ids. An activity instance must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include historic activity instances that belong to no tenant. Value may only be `true`, as `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/history/activity-instance/count?activityType\u003duserTask`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "post": { + "operationId": "queryHistoricActivityInstancesCount", + "tags": [ + "Historic Activity Instance" + ], + "summary": "Get List Count (POST)", + "description": "Queries for the number of historic activity instances that fulfill the given parameters.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricActivityInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/activity-instance/count`", + "value": { + "activityType": "userTask" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/activity-instance/{id}": { + "get": { + "operationId": "getHistoricActivityInstance", + "tags": [ + "Historic Activity Instance" + ], + "summary": "Get", + "description": "Retrieves a historic activity instance by id, according to the `HistoricActivityInstance` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the historic activity instance to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricActivityInstanceDto" + }, + "examples": { + "example-1": { + "summary": "GET `/history/activity-instance/aActivityInstId`", + "value": { + "id": "aActivityInstId", + "activityId": "anActivity", + "activityName": "anActivityName", + "activityType": "userTask", + "assignee": "peter", + "calledProcessInstanceId": "aHistoricCalledProcessInstanceId", + "calledCaseInstanceId": null, + "canceled": true, + "completeScope": false, + "durationInMillis": 2000, + "endTime": "2013-04-23T18:42:43.000+0200", + "executionId": "anExecutionId", + "parentActivityInstanceId": "aHistoricParentActivityInstanceId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "startTime": "2013-04-23T11:20:43.000+0200", + "taskId": "aTaskId", + "tenantId": null, + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not Found\nHistoric activity instance with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance": { + "get": { + "operationId": "getHistoricProcessInstances", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get List", + "description": "Queries for historic process instances that fulfill the given parameters.\nThe size of the result set can be retrieved by using the\n[Get Process Instance Count](https://docs.camunda.org/manual/7.15/reference/rest/history/process-instance/get-process-instance-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "instanceId", + "definitionId", + "definitionKey", + "definitionName", + "definitionVersion", + "businessKey", + "startTime", + "endTime", + "duration", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance id." + }, + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance ids. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the process definition the instances run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the instances run on." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a list of process definition keys. A process instance must have one of the given process definition keys. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the process definition the instances run on." + }, + { + "name": "processDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition names that the parameter is a substring of." + }, + { + "name": "processDefinitionKeyNotIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Exclude instances that belong to a set of process definitions. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key." + }, + { + "name": "processInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + { + "name": "rootProcessInstances", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are top level process instances." + }, + { + "name": "finished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include finished process instances. This flag includes all process instances\nthat are completed or terminated. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "unfinished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include unfinished process instances. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "withIncidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process instances which have an incident. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "withRootIncidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process instances which have a root incident. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type. See the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + { + "name": "incidentStatus", + "in": "query", + "schema": { + "enum": [ + "open", + "resolved" + ], + "type": "string" + }, + "description": "Only include process instances which have an incident in status either open or resolved. To get all process instances, use the query parameter withIncidents." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "startedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedActivityAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an activity after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedActivityBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an activity before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedJobAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an job after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedJobBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an job before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedBy", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that were started by the given user." + }, + { + "name": "superProcessInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given process instance. Takes a process instance id." + }, + { + "name": "subProcessInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to one process instance that has a sub process instance with the given id." + }, + { + "name": "superCaseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + { + "name": "subCaseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to one process instance that has a sub case instance with the given id." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a list of tenant ids. A process instance must have one of the given tenant ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include historic process instances which belong to no tenant. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "executedActivityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to instances that executed an activity with one of given ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "activeActivityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to instances that have an active activity with one of given ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are active." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are suspended." + }, + { + "name": "completed", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are completed." + }, + { + "name": "externallyTerminated", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are externallyTerminated." + }, + { + "name": "internallyTerminated", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are internallyTerminated." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that have/had variables with certain values.\nVariable filtering expressions are comma-separated and are structured as follows:\nA valid parameter value has the form `key_operator_value`. `key` is the variable name, `operator` is the comparison operator to be used and `value` the variable value.\n\n**Note:** Values are always treated as String objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`.\n\nKey and value may not contain underscore or comma characters.\n" + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in variables case-insensitively. If set to `true` variableName and variablename are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in variables case-insensitively. If set to `true` variableValue and variablevalue are treated as equal." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoricProcessInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/history/process-instance?finishedAfter\u003d2013-01-01T00:00:00.000%2b0200\u0026finishedBefore\u003d2013-04-01T23:59:59.000%2b0200\u0026executedActivityAfter\u003d2013-03-23T13:42:44.000%2b0200`", + "value": [ + { + "id": "7c80cc8f-ef95-11e6-b6e6-34f39ab71d4e", + "businessKey": null, + "processDefinitionId": "invoice:1:7bf79f13-ef95-11e6-b6e6-34f39ab71d4e", + "processDefinitionKey": "invoice", + "processDefinitionName": "Invoice Receipt", + "processDefinitionVersion": 1, + "startTime": "2017-02-10T14:33:19.000+0200", + "endTime": null, + "removalTime": null, + "durationInMillis": null, + "startUserId": null, + "startActivityId": "StartEvent_1", + "deleteReason": null, + "rootProcessInstanceId": "f8259e5d-ab9d-11e8-8449-e4a7a094a9d6", + "superProcessInstanceId": null, + "superCaseInstanceId": null, + "caseInstanceId": null, + "tenantId": null, + "state": "ACTIVE" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if a sortOrder parameter is supplied, but no sortBy.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "post": { + "operationId": "queryHistoricProcessInstances", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get List (POST)", + "description": "Queries for historic process instances that fulfill the given parameters.\nThis method is slightly more powerful than the\n[Get Process Instance](https://docs.camunda.org/manual/7.15/reference/rest/history/process-instance/get-process-instance-query/)\nbecause it allows filtering by multiple process variables of types `String`, `Number` or `Boolean`.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/process-instance`", + "value": { + "finishedAfter": "2013-01-01T00:00:00.000+0200", + "finishedBefore": "2013-04-01T23:59:59.000+0200", + "executedActivityAfter": "2013-03-23T13:42:44.000+0200", + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ], + "sorting": [ + { + "sortBy": "businessKey", + "sortOrder": "asc" + }, + { + "sortBy": "startTime", + "sortOrder": "desc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoricProcessInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/history/process-instance`", + "value": [ + { + "id": "7c80cc8f-ef95-11e6-b6e6-34f39ab71d4e", + "businessKey": null, + "processDefinitionId": "invoice:1:7bf79f13-ef95-11e6-b6e6-34f39ab71d4e", + "processDefinitionKey": "invoice", + "processDefinitionName": "Invoice Receipt", + "processDefinitionVersion": 1, + "startTime": "2017-02-10T14:33:19.000+0200", + "endTime": null, + "removalTime": null, + "durationInMillis": null, + "startUserId": null, + "startActivityId": "StartEvent_1", + "deleteReason": null, + "rootProcessInstanceId": "f8259e5d-ab9d-11e8-8449-e4a7a094a9d6", + "superProcessInstanceId": null, + "superCaseInstanceId": null, + "caseInstanceId": null, + "tenantId": null, + "state": "ACTIVE" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if a sortOrder parameter is supplied, but no sortBy.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance/count": { + "get": { + "operationId": "getHistoricProcessInstancesCount", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get List Count", + "description": "Queries for the number of historic process instances that fulfill the given parameters.\nTakes the same parameters as the [Get Process Instances](https://docs.camunda.org/manual/7.15/reference/rest/history/process-instance/get-process-instance-query/) method.", + "parameters": [ + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance id." + }, + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance ids. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the process definition the instances run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the instances run on." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a list of process definition keys. A process instance must have one of the given process definition keys. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the process definition the instances run on." + }, + { + "name": "processDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition names that the parameter is a substring of." + }, + { + "name": "processDefinitionKeyNotIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Exclude instances that belong to a set of process definitions. Filter by a comma-separated list of `Strings`." + }, + { + "name": "processInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key." + }, + { + "name": "processInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + { + "name": "rootProcessInstances", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are top level process instances." + }, + { + "name": "finished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include finished process instances. This flag includes all process instances\nthat are completed or terminated. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "unfinished", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include unfinished process instances. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "withIncidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process instances which have an incident. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "withRootIncidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process instances which have a root incident. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type. See the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + { + "name": "incidentStatus", + "in": "query", + "schema": { + "enum": [ + "open", + "resolved" + ], + "type": "string" + }, + "description": "Only include process instances which have an incident in status either open or resolved. To get all process instances, use the query parameter withIncidents." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "startedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "finishedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were finished after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedActivityAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an activity after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedActivityBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an activity before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedJobAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an job after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "executedJobBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that executed an job before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "startedBy", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that were started by the given user." + }, + { + "name": "superProcessInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given process instance. Takes a process instance id." + }, + { + "name": "subProcessInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to one process instance that has a sub process instance with the given id." + }, + { + "name": "superCaseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + { + "name": "subCaseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to one process instance that has a sub case instance with the given id." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a list of tenant ids. A process instance must have one of the given tenant ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include historic process instances which belong to no tenant. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "executedActivityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to instances that executed an activity with one of given ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "activeActivityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to instances that have an active activity with one of given ids. Filter by a comma-separated list of `Strings`" + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are active." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are suspended." + }, + { + "name": "completed", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are completed." + }, + { + "name": "externallyTerminated", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are externallyTerminated." + }, + { + "name": "internallyTerminated", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Restrict to instances that are internallyTerminated." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that have/had variables with certain values.\nVariable filtering expressions are comma-separated and are structured as follows:\nA valid parameter value has the form `key_operator_value`. `key` is the variable name, `operator` is the comparison operator to be used and `value` the variable value.\n\n**Note:** Values are always treated as String objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`.\n\nKey and value may not contain underscore or comma characters.\n" + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in variables case-insensitively. If set to `true` variableName and variablename are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in variables case-insensitively. If set to `true` variableValue and variablevalue are treated as equal." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/history/process-instance/count?variables\u003dmyVariable_eq_camunda`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "post": { + "operationId": "queryHistoricProcessInstancesCount", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get List Count (POST)", + "description": "Queries for the number of historic process instances that fulfill the given parameters.\nThis method takes the same message body as the [Get Process Instances (POST)](https://docs.camunda.org/manual/7.15/reference/rest/history/process-instance/get-process-instance-query/) method and\ntherefore it is slightly more powerful than the [Get Process Instance Count](https://docs.camunda.org/manual/7.15/reference/rest/history/process-instance/post-process-instance-query-count/) method.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/process-instance/count`", + "value": { + "finishedAfter": "2013-01-01T00:00:00.000+0200", + "finishedBefore": "2013-04-01T23:59:59.000+0200", + "executedActivityAfter": "2013-03-23T13:42:44.000+0200", + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance/delete": { + "post": { + "operationId": "deleteHistoricProcessInstancesAsync", + "tags": [ + "Historic Process Instance" + ], + "summary": "Delete Async (POST)", + "description": "Delete multiple historic process instances asynchronously (batch).\nAt least `historicProcessInstanceIds` or `historicProcessInstanceQuery` has to be provided.\nIf both are provided then all instances matching query criterion and instances from the list will be deleted.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteHistoricProcessInstancesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/process-instance/delete`", + "value": { + "deleteReason": "aReason", + "historicProcessInstanceIds": [ + "aProcess", + "secondProcess" + ], + "historicProcessInstanceQuery": { + "startedAfter": "2016-10-11T11:44:13.000+0200", + "finishedBefore": "2016-10-13T11:44:17.000+0200" + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/history/process-instance/delete`", + "value": { + "id": "120b568d-724a-11e9-98b7-be5e0f7575b7", + "type": "process-set-removal-time", + "totalJobs": 12, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "120b5690-724a-11e9-98b7-be5e0f7575b7", + "monitorJobDefinitionId": "120b568f-724a-11e9-98b7-be5e0f7575b7", + "batchJobDefinitionId": "120b568e-724a-11e9-98b7-be5e0f7575b7", + "tenantId": "accounting", + "suspended": false, + "createUserId": null + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, i.e. neither historicProcessInstanceIds,\nnor historicProcessInstanceQuery is present. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/history/process-instance/report": { + "get": { + "operationId": "getHistoricProcessInstanceDurationReport", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get Duration Report", + "description": "Retrieves a report about the duration of completed process instances, grouped by a period.\nThese reports include the maximum, minimum and average duration of all completed process instances which were started in a given period.\n\n**Note:** This only includes historic data.", + "parameters": [ + { + "name": "reportType", + "in": "query", + "schema": { + "type": "string" + }, + "required": true, + "description": "**Mandatory.** Specifies the type of the report to retrieve.\nTo retrieve a report about the duration of process instances, the value must be set to `duration`." + }, + { + "name": "periodUnit", + "in": "query", + "schema": { + "enum": [ + "month", + "quarter" + ], + "type": "string" + }, + "required": true, + "description": "**Mandatory.** Specifies the granularity of the report. Valid values are `month` and `quarter`." + }, + { + "name": "processDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition ids. Must be a comma-separated list of process definition ids." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition keys. Must be a comma-separated list of process definition keys." + }, + { + "name": "startedBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started before the given date.\nBy [default](), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2016-01-23T14:42:45.000+0200`." + }, + { + "name": "startedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restrict to instances that were started after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2016-01-23T14:42:45.000+0200`." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DurationReportResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/history/process-instance/report?reportType\u003dduration\u0026periodUnit\u003dquarter\u0026processDefinitionKeyIn\u003dinvoice`", + "value": [ + { + "period": 1, + "periodUnit": "QUARTER", + "maximum": 500000, + "minimum": 250000, + "average": 375000 + }, + { + "period": 2, + "periodUnit": "QUARTER", + "maximum": 600000, + "minimum": 300000, + "average": 450000 + }, + { + "period": 3, + "periodUnit": "QUARTER", + "maximum": 1000000, + "minimum": 500000, + "average": 750000 + }, + { + "period": 4, + "periodUnit": "QUARTER", + "maximum": 200000, + "minimum": 100000, + "average": 150000 + } + ] + } + } + }, + "application/csv": { + "schema": {} + }, + "text/csv": { + "schema": {} + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid or mandatory parameters are not supplied.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the authenticated user is unauthorized to read the history.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance/set-removal-time": { + "post": { + "operationId": "setRemovalTimeAsync", + "tags": [ + "Historic Process Instance" + ], + "summary": "Set Removal Time Async (POST)", + "description": "Sets the removal time to multiple historic process instances asynchronously (batch).\n\nAt least `historicProcessInstanceIds` or `historicProcessInstanceQuery` has to be provided.\nIf both are provided, all instances matching query criterion and instances from the list will be updated with a removal time.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetRemovalTimeToHistoricProcessInstancesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/history/process-instance/set-removal-time`", + "value": { + "absoluteRemovalTime": "2019-05-05T11:56:24.725+0200", + "hierarchical": true, + "historicProcessInstanceQuery": { + "unfinished": true + }, + "historicProcessInstanceIds": [ + "b4d2ad98-7240-11e9-98b7-be5e0f7575b7", + "b4d2ad94-7240-11e9-98b7-be5e0f7575b7" + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for POST `/history/process-instance/set-removal-time`", + "value": { + "id": "120b568d-724a-11e9-98b7-be5e0f7575b7", + "type": "process-set-removal-time", + "totalJobs": 12, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "120b5690-724a-11e9-98b7-be5e0f7575b7", + "monitorJobDefinitionId": "120b568f-724a-11e9-98b7-be5e0f7575b7", + "batchJobDefinitionId": "120b568e-724a-11e9-98b7-be5e0f7575b7", + "tenantId": "accounting", + "suspended": false, + "createUserId": null + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nRequest was unsuccessfull due to a bad user request. This occurs if some of the query parameters are invalid,\ne. g. if neither `historicProcessInstances` nor `historicProcessInstanceQuery` is present or if no mode is specified.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance/{id}": { + "delete": { + "operationId": "deleteHistoricProcessInstance", + "tags": [ + "Historic Process Instance" + ], + "summary": "Delete", + "description": "Deletes a process instance from the history by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the historic process instance to be deleted." + }, + { + "name": "failIfNotExists", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "If set to `false`, the request will still be successful if the process id is not found." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nHistoric process instance with given id does not exist." + } + } + }, + "get": { + "operationId": "getHistoricProcessInstance", + "tags": [ + "Historic Process Instance" + ], + "summary": "Get", + "description": "Retrieves a historic process instance by id, according to the `HistoricProcessInstance` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the historic process instance to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoricProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "GET `/history/process-instance/7c80cc8f-ef95-11e6-b6e6-34f39ab71d4e`", + "value": { + "id": "7c80cc8f-ef95-11e6-b6e6-34f39ab71d4e", + "businessKey": null, + "processDefinitionId": "invoice:1:7bf79f13-ef95-11e6-b6e6-34f39ab71d4e", + "processDefinitionKey": "invoice", + "processDefinitionName": "Invoice Receipt", + "processDefinitionVersion": 1, + "startTime": "2017-02-10T14:33:19.000+0200", + "endTime": null, + "removalTime": null, + "durationInMillis": null, + "startUserId": null, + "startActivityId": "StartEvent_1", + "deleteReason": null, + "rootProcessInstanceId": "f8259e5d-ab9d-11e8-8449-e4a7a094a9d6", + "superProcessInstanceId": null, + "superCaseInstanceId": null, + "caseInstanceId": null, + "tenantId": null, + "state": "ACTIVE" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not Found\nHistoric process instance with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/history/process-instance/{id}/variable-instances": { + "delete": { + "operationId": "deleteHistoricVariableInstancesOfHistoricProcessInstance", + "tags": [ + "Historic Process Instance" + ], + "summary": "Delete Variable Instances", + "description": "Deletes all variables of a process instance from the history by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance for which all historic variables are to be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nHistoric process instance with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#parse-exceptions) for the error response format." + } + } + } + }, + "/identity/groups": { + "get": { + "operationId": "getGroupInfo", + "tags": [ + "Identity" + ], + "summary": "Get a User\u0027s Groups", + "description": "Gets the groups of a user by id and includes all users that share a group with the\ngiven user.", + "parameters": [ + { + "name": "userId", + "in": "query", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to get the groups for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IdentityServiceGroupInfoDto" + }, + "examples": { + "example-1": { + "description": "GET `/identity/groups?userId\u003daUserId`", + "value": { + "groups": [ + { + "id": "group1Id", + "name": "group1" + } + ], + "groupUsers": [ + { + "firstName": "firstName", + "lastName": "lastName", + "displayName": "firstName lastName", + "id": "anotherUserId" + } + ] + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the `userId` query parameter is missing. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/identity/password-policy": { + "get": { + "operationId": "getPasswordPolicy", + "tags": [ + "Identity" + ], + "summary": "Get Password Policy", + "description": "A password policy consists of a list of rules that new passwords must follow to be\npolicy compliant. This end point returns a JSON representation of the\nlist of policy rules. More information on password policies in Camunda can be found in the password policy\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/password-policy/) and in\nthe [security instructions](https://docs.camunda.org/manual/7.15/user-guide/security/).", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PasswordPolicyDto" + }, + "examples": { + "example-1": { + "description": "GET `/identity/password-policy`", + "value": { + "rules": [ + { + "placeholder": "PASSWORD_POLICY_USER_DATA", + "parameter": null + }, + { + "placeholder": "PASSWORD_POLICY_LENGTH", + "parameter": { + "minLength": "10" + } + }, + { + "placeholder": "PASSWORD_POLICY_LOWERCASE", + "parameter": { + "minLowerCase": "1" + } + }, + { + "placeholder": "PASSWORD_POLICY_UPPERCASE", + "parameter": { + "minUpperCase": "1" + } + }, + { + "placeholder": "PASSWORD_POLICY_DIGIT", + "parameter": { + "minDigit": "1" + } + }, + { + "placeholder": "PASSWORD_POLICY_SPECIAL", + "parameter": { + "minSpecial": "1" + } + } + ] + } + } + } + } + }, + "description": "Request successful. This example uses the built-in password policy that enforces a minimum password length,\nand some complexity rules." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No password policy was found." + } + } + }, + "post": { + "operationId": "checkPassword", + "tags": [ + "Identity" + ], + "summary": "Validate Password", + "description": "A password policy consists of a list of rules that new passwords must follow to be\npolicy compliant. A password can be checked for compliancy via this\nend point. More information on password policies in Camunda can be found in the password policy\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/password-policy/) and in\nthe [security instructions](https://docs.camunda.org/manual/7.15/user-guide/security/).", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PasswordPolicyRequestDto" + }, + "examples": { + "example-1": { + "summary": "POST `/identity/password-policy`", + "value": { + "password": "myPassword", + "profile": { + "id": "jonny1", + "firstName": "John", + "lastName": "Doe", + "email": "jonny@camunda.org" + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckPasswordPolicyResultDto" + }, + "examples": { + "example-1": { + "description": "POST `/identity/password-policy`", + "value": { + "rules": [ + { + "placeholder": "PASSWORD_POLICY_USER_DATA", + "parameter": null, + "valid": true + }, + { + "placeholder": "PASSWORD_POLICY_LOWERCASE", + "parameter": { + "minLowerCase": "1" + }, + "valid": true + }, + { + "placeholder": "PASSWORD_POLICY_LENGTH", + "parameter": { + "minLength": "10" + }, + "valid": false + }, + { + "placeholder": "PASSWORD_POLICY_UPPERCASE\"", + "parameter": { + "minUpperCase": "1" + }, + "valid": false + }, + { + "placeholder": "PASSWORD_POLICY_DIGIT", + "parameter": { + "minDigit": "1" + }, + "valid": false + }, + { + "placeholder": "PASSWORD_POLICY_SPECIAL", + "parameter": { + "minSpecial": "1" + }, + "valid": false + } + ], + "valid": false + } + } + } + } + }, + "description": "Request successful. This example uses the built-in password policy that enforces a minimum password length, and\nsome complexity rules. The checked password is myPassword which is not complex enough to match all of\nthe policy rules." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No password policy was found to check the password against." + } + } + } + }, + "/identity/verify": { + "post": { + "operationId": "verifyUser", + "tags": [ + "Identity" + ], + "summary": "Verify User", + "description": "Verifies that user credentials are valid.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BasicUserCredentialsDto" + }, + "examples": { + "example-1": { + "summary": "POST `/identity/verify`", + "value": { + "username": "testUser", + "password": "testPassword" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "POST `/identity/verify`", + "value": { + "authenticatedUser": "testUser", + "authenticated": true + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If body does not contain username or password." + } + } + } + }, + "/incident": { + "get": { + "operationId": "getIncidents", + "tags": [ + "Incident" + ], + "summary": "Get List", + "description": "Queries for incidents that fulfill given parameters. The size of the result set can be retrieved by using\nthe [Get Incident Count](https://docs.camunda.org/manual/7.15/reference/rest/incident/get-query-count/) method.", + "parameters": [ + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to the given incident type. See the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident\ntypes." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident message." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that incidents message is a substring of the given value. The string can include\nthe wildcard character \u0027%\u0027 to express like-strategy: starts with (`string%`), ends with (`%string`) or\ncontains (`%string%`)." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process definition with the given id." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process definition with the given keys. Must be a\ncomma-separated list." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process instance with the given id." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to an execution with the given id." + }, + { + "name": "incidentTimestampBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to incidents that have an incidentTimestamp date before the given date. By default, the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "incidentTimestampAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to incidents that have an incidentTimestamp date after the given date. By default*, the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to an activity with the given id." + }, + { + "name": "failedActivityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that were created due to the failure of an activity with the given id." + }, + { + "name": "causeIncidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident id as cause incident." + }, + { + "name": "rootCauseIncidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident id as root cause incident." + }, + { + "name": "configuration", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given parameter set as configuration." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have one of the given comma-separated tenant ids." + }, + { + "name": "jobDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have one of the given comma-separated job definition ids." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "incidentId", + "incidentMessage", + "incidentTimestamp", + "incidentType", + "executionId", + "activityId", + "processInstanceId", + "processDefinitionId", + "causeIncidentId", + "rootCauseIncidentId", + "configuration", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncidentDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/incident/anIncidentId`", + "value": [ + { + "id": "anIncidentId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "executionId": "anExecutionId", + "incidentTimestamp": "2014-03-01T08:00:00.000+0200", + "incidentType": "failedJob", + "activityId": "serviceTask", + "failedActivityId": "serviceTask", + "causeIncidentId": "aCauseIncidentId", + "rootCauseIncidentId": "aRootCauseIncidentId", + "configuration": "aConfiguration", + "tenantId": null, + "incidentMessage": "anIncidentMessage", + "jobDefinitionId": "aJobDefinitionId", + "annotation": "an annotation" + }, + { + "id": "anIncidentId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "executionId": "anotherExecutionId", + "incidentTimestamp": "2014-03-01T09:00:00.000+0200", + "incidentType": "customIncidentType", + "activityId": "userTask", + "failedActivityId": "userTask", + "causeIncidentId": "anotherCauseIncidentId", + "rootCauseIncidentId": "anotherRootCauseIncidentId", + "configuration": "anotherConfiguration", + "tenantId": null, + "incidentMessage": "anotherIncidentMessage", + "jobDefinitionId": null, + "annotation": "another annotation" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error\nresponse format." + } + } + } + }, + "/incident/count": { + "get": { + "operationId": "getIncidentsCount", + "tags": [ + "Incident" + ], + "summary": "Get List Count", + "description": "Queries for the number of incidents that fulfill given parameters. Takes the same parameters as the\n[Get Incidents](https://docs.camunda.org/manual/7.15/reference/rest/incident/get-query/) method.", + "parameters": [ + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to the given incident type. See the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident\ntypes." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident message." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that incidents message is a substring of the given value. The string can include\nthe wildcard character \u0027%\u0027 to express like-strategy: starts with (`string%`), ends with (`%string`) or\ncontains (`%string%`)." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process definition with the given id." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process definition with the given keys. Must be a\ncomma-separated list." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to a process instance with the given id." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to an execution with the given id." + }, + { + "name": "incidentTimestampBefore", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to incidents that have an incidentTimestamp date before the given date. By default, the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "incidentTimestampAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Restricts to incidents that have an incidentTimestamp date after the given date. By default*, the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that belong to an activity with the given id." + }, + { + "name": "failedActivityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that were created due to the failure of an activity with the given id." + }, + { + "name": "causeIncidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident id as cause incident." + }, + { + "name": "rootCauseIncidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given incident id as root cause incident." + }, + { + "name": "configuration", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have the given parameter set as configuration." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have one of the given comma-separated tenant ids." + }, + { + "name": "jobDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restricts to incidents that have one of the given comma-separated job definition ids." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/incident/count?processInstanceId\u003daProcInstId`", + "value": [ + { + "count": 2 + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error\nresponse format." + } + } + } + }, + "/incident/{id}": { + "delete": { + "operationId": "resolveIncident", + "tags": [ + "Incident" + ], + "summary": "Resolve Incident", + "description": "Resolves an incident with given id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the incident to be resolved." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if an incident with given id does not exist." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if an incident is not related to any execution or an incident is of type `failedJob` or\n`failedExternalTask`. To resolve such an incident, please refer to the\n[Incident Types](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) section." + } + } + }, + "get": { + "operationId": "getIncident", + "tags": [ + "Incident" + ], + "summary": "Get Incident", + "description": "Retrieves an incident by ID.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the incident to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentDto" + }, + "examples": { + "example-1": { + "summary": "GET `/incident/anIncidentId`", + "value": { + "id": "anIncidentId", + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "executionId": "anExecutionId", + "incidentTimestamp": "2014-03-01T08:00:00.000+0200", + "incidentType": "failedJob", + "activityId": "serviceTask", + "failedActivityId": "serviceTask", + "causeIncidentId": "aCauseIncidentId", + "rootCauseIncidentId": "aRootCauseIncidentId", + "configuration": "aConfiguration", + "tenantId": null, + "incidentMessage": "anIncidentMessage", + "jobDefinitionId": "aJobDefinitionId", + "annotation": "an annotation" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if an incident with given id does not exist." + } + } + } + }, + "/incident/{id}/annotation": { + "delete": { + "operationId": "clearIncidentAnnotation", + "tags": [ + "Incident" + ], + "summary": "Clear Incident Annotation", + "description": "Clears the annotation of an incident with given id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the incident to clear the annotation at." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if no incident can be found for the given id." + } + } + }, + "put": { + "operationId": "setIncidentAnnotation", + "tags": [ + "Incident" + ], + "summary": "Set Incident Annotation", + "description": "Sets the annotation of an incident with given id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the incident to clear the annotation at." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/incident/7c80cc8f-ef95-11e6-b6e6-34f39ab71d4b/annotation`", + "value": { + "annotation": "my annotation" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if no incident can be found for the given id." + } + } + } + }, + "/job": { + "get": { + "operationId": "getJobs", + "tags": [ + "Job" + ], + "summary": "Get Jobs", + "description": "Queries for jobs that fulfill given parameters.\nThe size of the result set can be retrieved by using the [Get Job\nCount](https://docs.camunda.org/manual/7.15/reference/rest/job/get-query-count/) method.", + "parameters": [ + { + "name": "jobId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by job id." + }, + { + "name": "jobIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of job ids." + }, + { + "name": "jobDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given job definition." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given process instance." + }, + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given comma-separated list of process instance ids." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given execution." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process definition the jobs run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the jobs run on." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for an activity with the given id." + }, + { + "name": "withRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which have retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "executable", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which are executable, i.e., retries \u003e 0 and due date is `null` or due\ndate is in the past. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "timers", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that are timers. Cannot be used together with `messages`. Value may only\nbe `true`, as `false` is the default behavior." + }, + { + "name": "messages", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that are messages. Cannot be used together with `timers`. Value may only\nbe `true`, as `false` is the default behavior." + }, + { + "name": "dueDates", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs where the due date is lower or higher than the given date.\nDue date expressions are comma-separated and are structured as follows:\n\nA valid condition value has the form `operator_value`.\n`operator` is the comparison operator to be used and `value` the date value\nas string.\n\nValid operator values are: `gt` - greater than; `lt` - lower than.\n`value` may not contain underscore or comma characters." + }, + { + "name": "createTimes", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs created before or after the given date.\n\nCreate time expressions are comma-separated and are structured as\nfollows:\n\nA valid condition value has the form `operator_value`.\n`operator` is the comparison operator to be used and `value` the date value\nas string.\n\nValid operator values are: `gt` - greater than; `lt` - lower than.\n`value` may not contain underscore or comma characters." + }, + { + "name": "withException", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that failed due to an exception. Value may only be `true`, as `false` is\nthe default behavior." + }, + { + "name": "exceptionMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs that failed due to an exception with the given message." + }, + { + "name": "failedActivityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs that failed due to an exception at an activity with the given id." + }, + { + "name": "noRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which have no retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active jobs. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended jobs. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "priorityLowerThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority lower than or equal to the given value. Value must be a\nvalid `long` value." + }, + { + "name": "priorityHigherThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority higher than or equal to the given value. Value must be a\nvalid `long` value." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include jobs which belong to one of the passed comma-separated tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include jobs which belong to no tenant. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "includeJobsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include jobs which belong to no tenant. Can be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "jobId", + "executionId", + "processInstanceId", + "processDefinitionId", + "processDefinitionKey", + "jobPriority", + "jobRetries", + "jobDueDate", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobDto" + } + }, + "examples": { + "example-1": { + "description": "GET `/job/count?dueDates\u003dgt_2012-07-17T17:00:00.000+0200,lt_2012-07-17T18:00:00.000+0200\u0026createTimes\u003dgt_2012-05-05T10:00:00.000+0200,lt_2012-07-16T15:00:00.000+0200`", + "value": [ + { + "id": "aJobId", + "jobDefinitionId": "aJobDefinitionId", + "dueDate": "2018-07-17T17:05:00.000+0200", + "processInstanceId": "aProcessInstanceId", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aPDKey", + "executionId": "anExecutionId", + "retries": 0, + "exceptionMessage": "An exception Message", + "failedActivityId": "anActivityId", + "suspended": false, + "priority": 10, + "tenantId": null, + "createTime": "2018-05-05T17:00:00+0200" + }, + { + "id": "anotherJobId", + "jobDefinitionId": "anotherJobDefinitionId", + "dueDate": "2018-07-17T17:55:00.000+0200", + "processInstanceId": "aProcessInstanceId", + "processDefinitionId": "anotherPDId", + "processDefinitionKey": "anotherPDKey", + "executionId": "anotherExecutionId", + "retries": 0, + "exceptionMessage": "Another exception Message", + "failedActivityId": "anotherActivityId", + "suspended": true, + "priority": 8, + "tenantId": null, + "createTime": "2018-05-05T17:00:00+0200" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor due date comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryJobs", + "tags": [ + "Job" + ], + "summary": "Get Jobs (POST)", + "description": "Queries for jobs that fulfill given parameters. This method is slightly more\npowerful than the [Get Jobs](https://docs.camunda.org/manual/7.15/reference/rest/job/get-query/)\nmethod because it allows filtering by multiple jobs of types `String`,\n`Number` or `Boolean`.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/job`", + "value": { + "dueDates": [ + { + "operator": "gt", + "value": "2018-07-17T17:00:00.000+0200" + }, + { + "operator": "lt", + "value": "2018-07-17T18:00:00.000+0200" + } + ], + "createTimes": [ + { + "operator": "gt", + "value": "2012-05-05T10:00:00.000+0200" + }, + { + "operator": "lt", + "value": "2012-07-16T15:00:00.000+0200" + } + ], + "sorting": [ + { + "sortBy": "jobDueDate", + "sortOrder": "asc" + }, + { + "sortBy": "jobRetries", + "sortOrder": "asc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobDto" + } + }, + "examples": { + "example-1": { + "description": "POST `/job`", + "value": [ + { + "id": "aJobId", + "jobDefinitionId": "aJobDefinitionId", + "dueDate": "2018-07-17T17:05:00.000+0200", + "processInstanceId": "aProcessInstanceId", + "processDefinitionId": "aProcessDefinitionId", + "processDefinitionKey": "aPDKey", + "executionId": "anExecutionId", + "retries": 0, + "exceptionMessage": "An exception Message", + "failedActivityId": "anActivityId", + "suspended": false, + "priority": 10, + "tenantId": null, + "createTime": "2018-05-05T17:00:00+0200" + }, + { + "id": "anotherJobId", + "jobDefinitionId": "anotherJobDefinitionId", + "dueDate": "2018-07-17T17:55:00.000+0200", + "processInstanceId": "aProcessInstanceId", + "processDefinitionId": "anotherPDId", + "processDefinitionKey": "anotherPDKey", + "executionId": "anotherExecutionId", + "retries": 0, + "exceptionMessage": "Another exception Message", + "failedActivityId": "anotherActivityId", + "suspended": true, + "priority": 8, + "tenantId": null, + "createTime": "2018-05-05T17:00:00+0200" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor due date comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/count": { + "get": { + "operationId": "getJobsCount", + "tags": [ + "Job" + ], + "summary": "Get Job Count", + "description": "Queries for the number of jobs that fulfill given parameters.\nTakes the same parameters as the [Get\nJobs](https://docs.camunda.org/manual/7.15/reference/rest/job/get-query/) method.", + "parameters": [ + { + "name": "jobId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by job id." + }, + { + "name": "jobIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of job ids." + }, + { + "name": "jobDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given job definition." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given process instance." + }, + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given comma-separated list of process instance ids." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for the given execution." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the process definition the jobs run on." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the jobs run on." + }, + { + "name": "activityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs which exist for an activity with the given id." + }, + { + "name": "withRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which have retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "executable", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which are executable, i.e., retries \u003e 0 and due date is `null` or due\ndate is in the past. Value may only be `true`, as `false` is the default\nbehavior." + }, + { + "name": "timers", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that are timers. Cannot be used together with `messages`. Value may only\nbe `true`, as `false` is the default behavior." + }, + { + "name": "messages", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that are messages. Cannot be used together with `timers`. Value may only\nbe `true`, as `false` is the default behavior." + }, + { + "name": "dueDates", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs where the due date is lower or higher than the given date.\nDue date expressions are comma-separated and are structured as follows:\n\nA valid condition value has the form `operator_value`.\n`operator` is the comparison operator to be used and `value` the date value\nas string.\n\nValid operator values are: `gt` - greater than; `lt` - lower than.\n`value` may not contain underscore or comma characters." + }, + { + "name": "createTimes", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs created before or after the given date.\n\nCreate time expressions are comma-separated and are structured as\nfollows:\n\nA valid condition value has the form `operator_value`.\n`operator` is the comparison operator to be used and `value` the date value\nas string.\n\nValid operator values are: `gt` - greater than; `lt` - lower than.\n`value` may not contain underscore or comma characters." + }, + { + "name": "withException", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs that failed due to an exception. Value may only be `true`, as `false` is\nthe default behavior." + }, + { + "name": "exceptionMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs that failed due to an exception with the given message." + }, + { + "name": "failedActivityId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select jobs that failed due to an exception at an activity with the given id." + }, + { + "name": "noRetriesLeft", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only select jobs which have no retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active jobs. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended jobs. Value may only be `true`, as `false` is the default behavior." + }, + { + "name": "priorityLowerThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority lower than or equal to the given value. Value must be a\nvalid `long` value." + }, + { + "name": "priorityHigherThanOrEquals", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "Only include jobs with a priority higher than or equal to the given value. Value must be a\nvalid `long` value." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include jobs which belong to one of the passed comma-separated tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include jobs which belong to no tenant. Value may only be `true`, as `false` is the\ndefault behavior." + }, + { + "name": "includeJobsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include jobs which belong to no tenant. Can be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "GET `/job/count?dueDates\u003dgt_2012-07-17T17:00:00.000+0200,lt_2012-07-17T18:00:00.000+0200\u0026createTimes\u003dgt_2012-05-05T10:00:00.000+0200,lt_2012-07-16T15:00:00.000+0200`", + "value": { + "count": 2 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example, if an invalid operator\nfor due date comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryJobsCount", + "tags": [ + "Job" + ], + "summary": "Get Job Count (POST)", + "description": "Queries for jobs that fulfill given parameters. This method takes the same message\nbody as the [Get Jobs POST](https://docs.camunda.org/manual/7.15/reference/rest/job/post-\nquery/) method and therefore it is slightly more powerful than the\n[Get Job Count](https://docs.camunda.org/manual/7.15/reference/rest/job/get-query-count/)\nmethod.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/job/count`", + "value": { + "dueDates": [ + { + "operator": "gt", + "value": "2012-07-17T17:00:00.000+0200" + }, + { + "operator": "lt", + "value": "2012-07-17T18:00:00.000+0200" + } + ], + "createTimes": [ + { + "operator": "gt", + "value": "2012-05-05T10:00:00.000+0200" + }, + { + "operator": "lt", + "value": "2012-07-16T15:00:00.000+0200" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "POST `/job/count`", + "value": { + "count": 2 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example, if an invalid operator\nfor due date comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/retries": { + "post": { + "operationId": "setJobRetriesAsyncOperation", + "tags": [ + "Job" + ], + "summary": "Set Job Retries Async (POST)", + "description": "Create a batch to set retries of jobs asynchronously.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetJobRetriesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/job/retries`", + "value": { + "retries": 5, + "jobIds": [ + "aJob", + "secondJob" + ], + "jobQuery": { + "dueDates": [ + { + "operator": "gt", + "value": "2012-07-17T17:00:00.000+0200" + }, + { + "operator": "lt", + "value": "2012-07-17T18:00:00.000+0200" + } + ] + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 OK", + "description": "POST `/job/retries`", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "batchJobsPerSeed": 100, + "jobsCreated": 10, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "suspened": false, + "tenantId": "aTenantId", + "createUserId": "userId" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if neither\nprocessInstanceIds nor processInstanceQuery is present. Or if the\nretry count is not specified. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/suspended": { + "put": { + "operationId": "updateSuspensionStateBy", + "tags": [ + "Job" + ], + "summary": "Activate/Suspend Jobs", + "description": "Activates or suspends jobs matching the given criterion.\nThis can only be on of:\n* `jobDefinitionId`\n* `processDefinitionId`\n* `processInstanceId`\n* `processDefinitionKey`", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "Activates or suspends jobs with the given job definition id. PUT `/job/suspended`", + "value": { + "jobDefinitionId": "aJobDefinitionId", + "suspended": true + } + }, + "example-2": { + "summary": "Activates or suspends jobs with the given process definition id. PUT `/job/suspended`", + "value": { + "processDefinitionId": "aProcessDefinitionId", + "suspended": true + } + }, + "example-3": { + "summary": "Activates or suspends jobs with the given process instance id. PUT `/job/suspended`", + "value": { + "processInstanceId": "aProcessInstanceId", + "suspended": true + } + }, + "example-4": { + "summary": "Activates or suspends jobs with the given process definition key. PUT `/job/suspended`", + "value": { + "processDefinitionKey": "aProcessDefinitionKey", + "suspended": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the request parameters are invalid, for example, if `jobDefinitionId` and\n`processDefinitionId` are both specified.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}": { + "get": { + "operationId": "getJob", + "tags": [ + "Job" + ], + "summary": "Get Job", + "description": "Retrieves a job by id, according to the `Job` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobDto" + }, + "examples": { + "example-1": { + "description": "GET `/job/aJobId`", + "value": { + "id": "aJobId", + "jobDefinitionId": "f9eec330-e3ff-11e8-8f7d-e4a7a094a9d6", + "dueDate": "2018-07-17T17:00:00+0200", + "processInstanceId": "aProcessInstanceId", + "processDefinitionId": "timer:1:f9ee9c1f-e3ff-11e8-8f7d-e4a7a094a9d6", + "processDefinitionKey": "timer", + "executionId": "anExecutionId", + "retries": 0, + "exceptionMessage": "An exception Message", + "failedActivityId": "anActivityId", + "suspended": false, + "priority": 10, + "tenantId": null, + "createTime": "2018-05-05T17:00:00+0200" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/duedate": { + "put": { + "operationId": "setJobDuedate", + "tags": [ + "Job" + ], + "summary": "Set Job Due Date", + "description": "Updates the due date of a job by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be updated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobDuedateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/job/aJobId/duedate`", + "value": { + "duedate": "2013-08-13T18:43:28.000+0200", + "cascade": false + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The due date could not be set successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/duedate/recalculate": { + "post": { + "operationId": "recalculateDuedate", + "tags": [ + "Job" + ], + "summary": "Recalculate Job Due Date", + "description": "Recalculates the due date of a job by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be updated." + }, + { + "name": "creationDateBased", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Recalculate the due date based on the creation date of the job or the current date.\nValue may only be `false`, as `true` is the default behavior. " + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The due date could not be recalculated successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/execute": { + "post": { + "operationId": "executeJob", + "tags": [ + "Job" + ], + "summary": "Execute Job", + "description": "Executes a job by id. **Note:** The execution of the job happens synchronously in\nthe same thread.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be executed." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The job could not be executed successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/priority": { + "put": { + "operationId": "setJobPriority", + "tags": [ + "Job" + ], + "summary": "Set Job Priority", + "description": "Sets the execution priority of a job by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be updated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PriorityDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/job/aJobId/priority`", + "value": { + "priority": 10 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The priority could not be set successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/retries": { + "put": { + "operationId": "setJobRetries", + "tags": [ + "Job" + ], + "summary": "Set Job Retries", + "description": "Sets the retries of the job to the given number of retries by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to be updated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetriesDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/job/aJobId/retries`", + "value": { + "retries": 3 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The retries could not be set successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/stacktrace": { + "get": { + "operationId": "getStacktrace", + "tags": [ + "Job" + ], + "summary": "Get Exception Stacktrace", + "description": "Retrieves the exception stacktrace corresponding to the passed job id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to get the exception stacktrace for." + } + ], + "responses": { + "200": { + "content": { + "text/plain": { + "schema": {}, + "examples": { + "example-1": { + "description": "GET `/job/aJobId/stacktrace`", + "value": "java.lang.RuntimeException: A exception message!\n at org.camunda.bpm.pa.service.FailingDelegate.execute(FailingDelegate.java:10)\n at org.camunda.bpm.engine.impl.delegate.JavaDelegateInvocation.invoke(JavaDelegateInvocation.java:34)\n at org.camunda.bpm.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:37)\n ..." + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Job with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/job/{id}/suspended": { + "put": { + "operationId": "updateJobSuspensionState", + "tags": [ + "Job" + ], + "summary": "Activate/Suspend Job By Id", + "description": "Activates or suspends a given job by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the job to activate or suspend." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/job/aJobId/suspended`", + "value": { + "suspended": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + } + } + } + }, + "/message": { + "post": { + "operationId": "deliverMessage", + "tags": [ + "Message" + ], + "summary": "Correlate", + "description": "Correlates a message to the process engine to either trigger a message start event or an intermediate message \ncatching event. Internally this maps to the engine\u0027s message correlation builder methods\n`MessageCorrelationBuilder#correlateWithResult()` and `MessageCorrelationBuilder#correlateAllWithResult()`.\nFor more information about the correlation behavior, see the [Message Events](https://docs.camunda.org/manual/7.15/bpmn20/events/message-events/)\nsection of the [BPMN 2.0 Implementation Reference](https://docs.camunda.org/manual/7.15/reference/bpmn20/).", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrelationMessageDto" + }, + "examples": { + "example-1": { + "summary": "POST /condition", + "description": "Correlate without result", + "value": { + "messageName": "aMessage", + "businessKey": "aBusinessKey", + "correlationKeys": { + "aVariable": { + "value": "aValue", + "type": "String" + } + }, + "processVariables": { + "aVariable": { + "value": "aNewValue", + "type": "String", + "valueInfo": { + "transient": true + } + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + } + } + }, + "example-2": { + "summary": "POST /condition", + "description": "Correlate with result", + "value": { + "messageName": "aMessage", + "businessKey": "aBusinessKey", + "correlationKeys": { + "aVariable": { + "value": "aValue", + "type": "String" + } + }, + "processVariables": { + "aVariable": { + "value": "aNewValue", + "type": "String", + "valueInfo": { + "transient": true + } + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "resultEnabled": true + } + }, + "example-3": { + "summary": "POST /condition", + "description": "Correlate with result and variables", + "value": { + "messageName": "aMessage", + "businessKey": "aBusinessKey", + "correlationKeys": { + "aVariable": { + "value": "aValue", + "type": "String" + } + }, + "processVariables": { + "aVariable": { + "value": "aNewValue", + "type": "String", + "valueInfo": { + "transient": true + } + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "resultEnabled": true, + "variablesInResultEnabled": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MessageCorrelationResultWithVariableDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response.", + "description": "The Response content of a status 200. The property `variablesInResultEnabled` in the request body was `false` (Default).", + "value": [ + { + "resultType": "ProcessDefinition", + "execution": null, + "processInstance": { + "links": [], + "id": "aProcInstId", + "definitionId": "aProcDefId", + "businessKey": "aKey", + "caseInstanceId": "aCaseInstId", + "ended": false, + "suspended": false, + "tenantId": "aTenantId" + } + } + ] + }, + "example-2": { + "summary": "Status 200 Response.", + "description": "The Response content of a status 200. The property `variablesInResultEnabled` in the request body was `true`.", + "value": [ + { + "resultType": "Execution", + "execution": { + "id": "anExecutionId", + "processInstanceId": "aProcInstId", + "ended": false, + "tenantId": "aTenantId" + }, + "processInstance": null, + "variables": { + "aVariable": { + "value": "aNewValue", + "type": "String", + "valueInfo": { + "transient": true + } + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + } + } + ] + } + } + } + }, + "description": "Request successful. The property `resultEnabled` in the request body was `true`.\nThe `variables` property is only returned, if the property variablesInResultEnable`\nwas set to `true` in the request." + }, + "204": { + "description": "Request successful. The property `resultEnabled` in the request body was `false` (Default)." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if:\n* no `messageName` was supplied\n* both `tenantId` and `withoutTenantId` are supplied\n* the message has not been correlated to exactly one entity (execution or process definition)\n* the variable value or type is invalid, for example if the value could not be parsed to an Integer value or the passed variable type is not supported.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/metrics": { + "get": { + "operationId": "interval", + "tags": [ + "Metrics" + ], + "summary": "Get Metrics in Interval", + "description": "Retrieves a list of metrics, aggregated for a given interval.", + "parameters": [ + { + "name": "name", + "in": "query", + "schema": { + "enum": [ + "activity-instance-start", + "activity-instance-end", + "job-acquisition-attempt", + "job-acquired-success", + "job-acquired-failure", + "job-execution-rejected", + "job-successful", + "job-failed", + "job-locked-exclusive", + "executed-decision-elements", + "history-cleanup-removed-process-instances", + "history-cleanup-removed-case-instances", + "history-cleanup-removed-decision-instances", + "history-cleanup-removed-batch-operations", + "history-cleanup-removed-task-metrics" + ], + "type": "string" + }, + "description": "The name of the metric." + }, + { + "name": "reporter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "The name of the reporter (host), on which the metrics was logged. This will have\nvalue provided by the [hostname configuration property](https://docs.camunda.org/manual/7.15/reference/deployment-descriptors/tags/process-engine/#hostname)." + }, + { + "name": "startDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "The start date (inclusive)." + }, + { + "name": "endDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "The end date (exclusive)." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "interval", + "in": "query", + "schema": { + "default": 900, + "type": "string" + }, + "description": "The interval for which the metrics should be aggregated. Time unit is seconds.\nDefault: The interval is set to 15 minutes (900 seconds)." + }, + { + "name": "aggregateByReporter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Aggregate metrics by reporter." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricsIntervalResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /metrics?name\u003dactivity-instance-end\u0026startDate\u003d1970-01-01T01:45:00.000%2b0200\u0026endDate\u003d1970-01-01T02:00:00.000%2b0200", + "value": [ + { + "timestamp": "1970-01-01T01:45:00.000+0200", + "name": "activity-instance-end", + "reporter": "REPORTER", + "value": 23 + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid." + } + } + } + }, + "/metrics/task-worker": { + "delete": { + "operationId": "deleteTaskMetrics", + "tags": [ + "Metrics" + ], + "summary": "Delete Task Worker Metrics", + "description": "Deletes all task worker metrics prior to the given date or all if no date is provided.", + "parameters": [ + { + "name": "date", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "The date prior to which all task worker metrics should be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the user who performs the operation is not a \u003cb\u003ecamunda-admin\u003c/b\u003e user." + } + } + } + }, + "/metrics/{metrics-name}/sum": { + "get": { + "operationId": "getMetrics", + "tags": [ + "Metrics" + ], + "summary": "Get Sum", + "description": "Retrieves the `sum` (count) for a given metric.", + "parameters": [ + { + "name": "metrics-name", + "in": "path", + "schema": { + "enum": [ + "activity-instance-start", + "activity-instance-end", + "job-acquisition-attempt", + "job-acquired-success", + "job-acquired-failure", + "job-execution-rejected", + "job-successful", + "job-failed", + "job-locked-exclusive", + "executed-decision-elements", + "history-cleanup-removed-process-instances", + "history-cleanup-removed-case-instances", + "history-cleanup-removed-decision-instances", + "history-cleanup-removed-batch-operations", + "history-cleanup-removed-task-metrics", + "unique-task-workers" + ], + "type": "string" + }, + "required": true, + "description": "The name of the metric." + }, + { + "name": "startDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "The start date (inclusive)." + }, + { + "name": "endDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "The end date (exclusive)." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResultDto" + }, + "examples": { + "example-1": { + "summary": "GET /metrics/activity-instance-end/sum?startDate\u003d2015-01-01T00:00:00.000%2b0200", + "value": { + "result": 4342343241 + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/process-definition": { + "get": { + "operationId": "getProcessDefinitions", + "tags": [ + "Process Definition" + ], + "summary": "Get List", + "description": "Queries for process definitions that fulfill given parameters. Parameters may be the properties of \nprocess definitions, such as the name, key or version. The size of the result set can be retrieved\nby using the [Get Definition Count](https://docs.camunda.org/manual/7.15/reference/rest/process-definition/get-query-count/) method.", + "parameters": [ + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition id." + }, + { + "name": "processDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition names that the parameter is a substring of." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "deployedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the process definition belongs to.\nOnly selects process definitions that have been deployed after (exclusive) a specific time.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "deployedAt", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the process definition belongs to.\nOnly selects process definitions that have been deployed at a specific time (exact match).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "key", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition key, i.e., the id in the BPMN 2.0 XML. Exact match." + }, + { + "name": "keysIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition keys." + }, + { + "name": "keyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition keys that the parameter is a substring of." + }, + { + "name": "category", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition category. Exact match." + }, + { + "name": "categoryLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition categories that the parameter is a substring of." + }, + { + "name": "version", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "description": "Filter by process definition version." + }, + { + "name": "latestVersion", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include those process definitions that are latest versions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the process definition resource. Exact match." + }, + { + "name": "resourceNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by names of those process definition resources that the parameter is a substring of." + }, + { + "name": "startableBy", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a user name who is allowed to start the process." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active process definitions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended process definitions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nA process definition must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process definitions which belong to no tenant.\nValue may only be true, as false is the default behavior." + }, + { + "name": "includeProcessDefinitionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include process definitions which belong to no tenant. Can be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "versionTag", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag." + }, + { + "name": "versionTagLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag that the parameter is a substring of." + }, + { + "name": "withoutVersionTag", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process definitions without a `versionTag`." + }, + { + "name": "startableInTasklist", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which are startable in Tasklist.." + }, + { + "name": "notStartableInTasklist", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which are not startable in Tasklist." + }, + { + "name": "startablePermissionCheck", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which the user is allowed to start in Tasklist.\nIf the user doesn\u0027t have these permissions the result will be empty list.\nThe permissions are:\n* `CREATE` permission for all Process instances\n* `CREATE_INSTANCE` and `READ` permission on Process definition level" + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "category", + "key", + "id", + "name", + "version", + "deploymentId", + "deployTime", + "tenantId ", + "versionTag" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response of GET `/process-definition?keyLike\u003dinvoice\u0026sortBy\u003dversion\u0026sortOrder\u003dasc`", + "value": [ + { + "id": "invoice:1:c3a63aaa-2046-11e7-8f94-34f39ab71d4e", + "key": "invoice", + "category": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "description": null, + "name": "Invoice Receipt", + "version": 1, + "resource": "invoice.v1.bpmn", + "deploymentId": "c398cd26-2046-11e7-8f94-34f39ab71d4e", + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5, + "startableInTasklist": true + }, + { + "id": "invoice:2:c3e1bd16-2046-11e7-8f94-34f39ab71d4e", + "key": "invoice", + "category": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "description": null, + "name": "Invoice Receipt", + "version": 2, + "resource": "invoice.v2.bpmn", + "deploymentId": "c3d82020-2046-11e7-8f94-34f39ab71d4e", + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": null, + "startableInTasklist": true + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/count": { + "get": { + "operationId": "getProcessDefinitionsCount", + "tags": [ + "Process Definition" + ], + "summary": "Get List Count", + "description": "Requests the number of process definitions that fulfill the query criteria.\nTakes the same filtering parameters as the [Get Definitions](https://docs.camunda.org/manual/7.15/reference/rest/process-definition/get-query/) method.", + "parameters": [ + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition id." + }, + { + "name": "processDefinitionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition ids." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition names that the parameter is a substring of." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "deployedAfter", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the process definition belongs to.\nOnly selects process definitions that have been deployed after (exclusive) a specific time.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "deployedAt", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + }, + "description": "Filter by the deploy time of the deployment the process definition belongs to.\nOnly selects process definitions that have been deployed at a specific time (exact match).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "key", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition key, i.e., the id in the BPMN 2.0 XML. Exact match." + }, + { + "name": "keysIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition keys." + }, + { + "name": "keyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition keys that the parameter is a substring of." + }, + { + "name": "category", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition category. Exact match." + }, + { + "name": "categoryLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process definition categories that the parameter is a substring of." + }, + { + "name": "version", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "description": "Filter by process definition version." + }, + { + "name": "latestVersion", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include those process definitions that are latest versions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the process definition resource. Exact match." + }, + { + "name": "resourceNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by names of those process definition resources that the parameter is a substring of." + }, + { + "name": "startableBy", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a user name who is allowed to start the process." + }, + { + "name": "active", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include active process definitions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include suspended process definitions.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nA process definition must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process definitions which belong to no tenant.\nValue may only be true, as false is the default behavior." + }, + { + "name": "includeProcessDefinitionsWithoutTenantId", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Include process definitions which belong to no tenant. Can be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + { + "name": "versionTag", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag." + }, + { + "name": "versionTagLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the version tag that the parameter is a substring of." + }, + { + "name": "withoutVersionTag", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Only include process definitions without a `versionTag`." + }, + { + "name": "startableInTasklist", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which are startable in Tasklist.." + }, + { + "name": "notStartableInTasklist", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which are not startable in Tasklist." + }, + { + "name": "startablePermissionCheck", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Filter by process definitions which the user is allowed to start in Tasklist.\nIf the user doesn\u0027t have these permissions the result will be empty list.\nThe permissions are:\n* `CREATE` permission for all Process instances\n* `CREATE_INSTANCE` and `READ` permission on Process definition level" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response of GET `/process-definition/count?keyLike\u003dKey\u0026version\u003d47`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}": { + "delete": { + "operationId": "deleteProcessDefinitionsByKey", + "tags": [ + "Process Definition" + ], + "summary": "Delete By Key", + "description": "Deletes process definitions by a given key which belong to no tenant id.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definitions to be deleted." + }, + { + "name": "cascade", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "`true`, if all process instances, historic process instances and jobs\nfor this process definition should be deleted." + }, + { + "name": "skipCustomListeners", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if only the built-in ExecutionListeners should be notified with the end event." + }, + { + "name": "skipIoMappings", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "A boolean value to control whether input/output mappings should be executed during deletion.\n`true`, if input/output mappings should not be invoked." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "Forbidden\nThe process definitions with the given `key` cannot be deleted due to missing permissions.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nProcess definition with given `key` does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getProcessDefinitionByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get", + "description": "Retrieves the latest version of the process definition which belongs to no tenant according to the `ProcessDefinition` interface in the engine.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response of GET `/process-definition/key/invoice`", + "value": { + "id": "invoice:1:c3a63aaa-2046-11e7-8f94-34f39ab71d4e", + "key": "invoice", + "category": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "description": null, + "name": "Invoice Receipt", + "version": 1, + "resource": "invoice.v1.bpmn", + "deploymentId": "c398cd26-2046-11e7-8f94-34f39ab71d4e", + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5, + "startableInTasklist": true + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given `key` does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/deployed-start-form": { + "get": { + "operationId": "getDeployedStartFormByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Deployed Start Form", + "description": "Retrieves the deployed form that can be referenced from a start event.\nFor further information please refer to [User Guide](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#embedded-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "Resonse for GET `/process-definition/key/processDefinitionKey/deployed-start-form`", + "value": "\u003cform role\u003d\"form\" name\u003d\"invoiceForm\"\n class\u003d\"form-horizontal\"\u003e\n\n \u003cdiv class\u003d\"form-group\"\u003e\n \u003clabel class\u003d\"control-label col-md-4\"\n for\u003d\"creditor\"\u003eCreditor\u003c/label\u003e\n \u003cdiv class\u003d\"col-md-8\"\u003e\n \u003cinput cam-variable-name\u003d\"creditor\"\n cam-variable-type\u003d\"String\"\n id\u003d\"creditor\"\n class\u003d\"form-control\"\n type\u003d\"text\"\n required /\u003e\n \u003cdiv class\u003d\"help\"\u003e\n (e.g. \u0026quot;Great Pizza for Everyone Inc.\u0026quot;)\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The form key has wrong format. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The deployed start form cannot be retrieved due to missing permissions on process definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No deployed start form for a given process definition exists. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/diagram": { + "get": { + "operationId": "getProcessDefinitionDiagramByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Diagram", + "description": "Retrieves the diagram for the latest version of the process definition which belongs to no tenant.\n\nIf the process definition\u0027s deployment contains an image resource with the same file name\nas the process definition, the deployed image will be returned by the Get Diagram endpoint.\nExample: `someProcess.bpmn` and `someProcess.png`.\nSupported file extentions for the image are: `svg`, `png`, `jpg`, and `gif`.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The process definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/form-variables": { + "get": { + "operationId": "getStartFormVariablesByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Variables", + "description": "Retrieves the start form variables for the latest process definition which belongs to no tenant\n(only if they are defined via the \n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms) approach).\nThe start form variables take form data specified on the start event into account.\nIf form fields are defined, the variable types and default values\nof the form fields are taken into account.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "variableNames", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of variable names. Allows restricting the list of requested\nvariables to the variable names in the list. It is best practice to restrict the\nlist of variables to the variables actually required by the form in order to\nminimize fetching of data. If the query parameter is ommitted all variables are\nfetched. If the query parameter contains non-existent variable names, the variable\nnames are ignored." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store\ncustom Java objects) should be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and\ntransformed to JSON using [Jackson\u0027s](http://jackson.codehaus.org/) POJO/bean\nproperty introspection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string\ncontaining XML.\n\n**Note**: While true is the default value for reasons of backward compatibility, we\nrecommend setting this parameter to false when developing web applications that are\nindependent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `/process-definition/anId/form-variables`", + "value": { + "amount": { + "type": "integer", + "value": 5, + "valueInfo": {} + }, + "firstName": { + "type": "String", + "value": "Jonny", + "valueInfo": {} + } + } + } + } + } + }, + "description": "Request successful. A JSON object containing a property for each variable returned." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The key is null or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByProcessDefinitionKey", + "tags": [ + "Process Definition" + ], + "summary": "Update History Time to Live", + "description": "Updates history time to live for the latest version of the process definition which belongs to no tenant.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition to change history time to live." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/key/aProcessDefinitionKey/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/rendered-form": { + "get": { + "operationId": "getRenderedStartFormByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Rendered Start Form", + "description": "Retrieves the rendered form for the latest version of the process definition which belongs to no tenant.\nThis method can be used to get the HTML rendering of a\n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "A `/process-definition/key/anKey/rendered-form` HTML\n GET response body providing the rendered (generated) form content.", + "value": "\u003cform class\u003d\"form-horizontal\"\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eCustomer ID\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"string\" name\u003d\"customerId\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eAmount\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"number\" name\u003d\"amount\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no form field metadata defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/start": { + "post": { + "operationId": "startProcessInstanceByKey", + "tags": [ + "Process Definition" + ], + "summary": "Start Instance", + "description": "Instantiates a given process definition, starts the latest version of the process definition\nwhich belongs to no tenant.\nProcess variables and business key may be supplied in the request body.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Starting a process instance at its default initial activity", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + }, + "example-2": { + "summary": "Starting a process instance with variables in return", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey", + "withVariablesInReturn": true + } + }, + "example-3": { + "summary": "Starting a process instance at two specific activities", + "value": { + "variables": { + "aProcessVariable": { + "value": "aStringValue", + "type": "String" + } + }, + "businessKey": "myBusinessKey", + "skipCustomListeners": true, + "startInstructions": [ + { + "type": "startBeforeActivity", + "activityId": "activityId", + "variables": { + "var": { + "value": "aVariableValue", + "local": false, + "type": "String" + } + } + }, + { + "type": "startAfterActivity", + "activityId": "anotherActivityId", + "variables": { + "varLocal": { + "value": "anotherVariableValue", + "local": true, + "type": "String" + } + } + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceWithVariablesDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "Response for starting a process instance at its default initial activity", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + }, + "example-2": { + "summary": "Status 200 Response 2", + "description": "Response for starting a process instance with variables in return", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/aProcInstId", + "rel": "self" + } + ], + "id": "aProcInstId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "ended": false, + "suspended": false, + "tenantId": null, + "variables": { + "anotherVariable": { + "type": "Boolean", + "value": true, + "valueInfo": { + "transient": true + } + }, + "aVariable": { + "type": "String", + "value": "aStringValue", + "valueInfo": {} + } + } + } + }, + "example-3": { + "summary": "Status 200 Response 3", + "description": "Response for starting a process instance at two specific activities", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/startForm": { + "get": { + "operationId": "getStartFormByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Key", + "description": "Retrieves the key of the start form for the latest version of the process definition\nwhich belongs to no tenant.\nThe form key corresponds to the `FormData#formKey` property in the engine.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) for which the form key is to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `process-definition/key/aKey/startForm`", + "value": { + "key": "aFormKey", + "contextPath": "http://localhost:8080/my-process-application/" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no start form defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/statistics": { + "get": { + "operationId": "getActivityStatisticsByProcessDefinitionKey", + "tags": [ + "Process Definition" + ], + "summary": "Get Activity Instance Statistics", + "description": "Retrieves runtime statistics of the latest version of the given process definition\nwhich belongs to no tenant, grouped by activities.\nThese statistics include the number of running activity instances, optionally the number of failed jobs\nand also optionally the number of incidents either grouped by incident types or\nfor a specific incident type.\n**Note**: This does not include historic data.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "failedJobs", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Whether to include the number of failed jobs in the result or not. Valid values are `true` or `false`." + }, + { + "name": "incidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Valid values for this property are `true` or `false`.\nIf this property has been set to `true` the result will include the corresponding number of incidents\nfor each occurred incident type.\nIf it is set to `false`, the incidents will not be included in the result.\nCannot be used in combination with `incidentsForType`." + }, + { + "name": "incidentsForType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "If this property has been set with any incident type (i.e., a string value) the result\nwill only include the number of incidents for the assigned incident type.\nCannot be used in combination with `incidents`.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityStatisticsResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/statistics?failedJobs\u003dtrue", + "description": "Request with Query Parameter `failedJobs\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 42, + "incidents": [] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 43, + "incidents": [] + } + ] + }, + "example-2": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/statistics?incidents\u003dtrue", + "description": "Request with Query Parameter `incidents\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 42 + }, + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 43 + }, + { + "incidentType": "anIncident", + "incidentCount": 22 + }, + { + "incidentType": "anotherIncident", + "incidentCount": 15 + } + ] + } + ] + }, + "example-3": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/statistics?incidentsForType\u003danIncident", + "description": "Request with Query Parameter `incidentsForType\u003danIncident`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/submit-form": { + "post": { + "operationId": "submitFormByKey", + "tags": [ + "Process Definition" + ], + "summary": "Submit Start Form", + "description": "Starts the latest version of the process definition which belongs to no tenant\nusing a set of process variables and the business key.\nIf the start event has Form Field Metadata defined, the process engine will perform backend validation\nfor any form fields which have validators defined.\nSee [Documentation on Generated Task Forms](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition to submit the form for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceFormDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-definition/key/aProcessDefinitionKey/submit-form`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "POST `/process-definition/key/aProcessDefinitionKey/submit-form`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/suspended": { + "put": { + "operationId": "updateProcessDefinitionSuspensionStateByKey", + "tags": [ + "Process Definition" + ], + "summary": "Activate/Suspend by Id", + "description": "Activates or suspends a given process definition by latest version of process definition key\nwhich belongs to no tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be activated/suspended." + } + ], + "requestBody": { + "description": "**Note**: Unallowed properties are `processDefinitionId` and `processDefinitionKey`.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/key/aProcessDefinitionKey/suspended`", + "value": { + "suspended": true, + "includeProcessInstances": true, + "executionDate": "2013-11-21T10:49:45T14:42:45" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if the provided `executionDate` parameter doesn\u0027t have the expected format or\nif the `processDefinitionKey` parameter is `null`. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}": { + "delete": { + "operationId": "deleteProcessDefinitionsByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Delete By Key", + "description": "Deletes process definitions by a given key and which belong to a tenant id.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definitions to be deleted." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definitions belong to." + }, + { + "name": "cascade", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "`true`, if all process instances, historic process instances and jobs\nfor this process definition should be deleted." + }, + { + "name": "skipCustomListeners", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if only the built-in ExecutionListeners should be notified with the end event." + }, + { + "name": "skipIoMappings", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "A boolean value to control whether input/output mappings should be executed during deletion.\n`true`, if input/output mappings should not be invoked." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "Forbidden\nThe process definitions with the given `key` cannot be deleted due to missing permissions.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nProcess definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getLatestProcessDefinitionByTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get", + "description": "Retrieves the latest version of the process definition for tenant according to\nthe `ProcessDefinition` interface in the engine.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response of GET `/process-definition/key/invoice/tenant-id/tenantOne`", + "value": { + "id": "invoice:1:c3a63aaa-2046-11e7-8f94-34f39ab71d4e", + "key": "invoice", + "category": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "description": null, + "name": "Invoice Receipt", + "version": 1, + "resource": "invoice.v1.bpmn", + "deploymentId": "c398cd26-2046-11e7-8f94-34f39ab71d4e", + "diagram": null, + "suspended": false, + "tenantId": "tenantOne", + "versionTag": null, + "historyTimeToLive": 5, + "startableInTasklist": true + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given `key` does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/deployed-start-form": { + "get": { + "operationId": "getDeployedStartFormByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Deployed Start Form", + "description": "Retrieves the deployed form that can be referenced from a start event.\nFor further information please refer to [User Guide](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#embedded-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definitions belong to." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "Resonse for GET\n `/process-definition/key/processDefinitionKey/tenant-id/tenantId/deployed-start-form`", + "value": "\u003cform role\u003d\"form\" name\u003d\"invoiceForm\"\n class\u003d\"form-horizontal\"\u003e\n\n \u003cdiv class\u003d\"form-group\"\u003e\n \u003clabel class\u003d\"control-label col-md-4\"\n for\u003d\"creditor\"\u003eCreditor\u003c/label\u003e\n \u003cdiv class\u003d\"col-md-8\"\u003e\n \u003cinput cam-variable-name\u003d\"creditor\"\n cam-variable-type\u003d\"String\"\n id\u003d\"creditor\"\n class\u003d\"form-control\"\n type\u003d\"text\"\n required /\u003e\n \u003cdiv class\u003d\"help\"\u003e\n (e.g. \u0026quot;Great Pizza for Everyone Inc.\u0026quot;)\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The form key has wrong format. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The deployed start form cannot be retrieved due to missing permissions on process definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No deployed start form for a given process definition exists. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/diagram": { + "get": { + "operationId": "getProcessDefinitionDiagramByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Diagram", + "description": "Retrieves the diagram for the latest version of the process definition for tenant.\n\nIf the process definition\u0027s deployment contains an image resource with the same file name\nas the process definition, the deployed image will be returned by the Get Diagram endpoint.\nExample: `someProcess.bpmn` and `someProcess.png`.\nSupported file extentions for the image are: `svg`, `png`, `jpg`, and `gif`.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The process definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/form-variables": { + "get": { + "operationId": "getStartFormVariablesByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Variables", + "description": "Retrieves the start form variables for the latest process definition for a tenant\n(only if they are defined via the \n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms) approach).\nThe start form variables take form data specified on the start event into account.\nIf form fields are defined, the variable types and default values\nof the form fields are taken into account.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + }, + { + "name": "variableNames", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of variable names. Allows restricting the list of requested\nvariables to the variable names in the list. It is best practice to restrict the\nlist of variables to the variables actually required by the form in order to\nminimize fetching of data. If the query parameter is ommitted all variables are\nfetched. If the query parameter contains non-existent variable names, the variable\nnames are ignored." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store\ncustom Java objects) should be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and\ntransformed to JSON using [Jackson\u0027s](http://jackson.codehaus.org/) POJO/bean\nproperty introspection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string\ncontaining XML.\n\n**Note**: While true is the default value for reasons of backward compatibility, we\nrecommend setting this parameter to false when developing web applications that are\nindependent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `/process-definition/anId/form-variables`", + "value": { + "amount": { + "type": "integer", + "value": 5, + "valueInfo": {} + }, + "firstName": { + "type": "String", + "value": "Jonny", + "valueInfo": {} + } + } + } + } + } + }, + "description": "Request successful. A JSON object containing a property for each variable returned." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The key is null or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByProcessDefinitionKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Update History Time to Live", + "description": "Updates history time to live for the latest version of the process definition for a tenant.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition to change history time to live." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/rendered-form": { + "get": { + "operationId": "getRenderedStartFormByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Rendered Start Form", + "description": "Retrieves the rendered form for the latest version of the process definition for a tenant.\nThis method can be used to get the HTML rendering of a\n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "A `/process-definition/key/anKey/tenand-id/aTenantId/rendered-form` HTML\n GET response body providing the rendered (generated) form content.", + "value": "\u003cform class\u003d\"form-horizontal\"\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eCustomer ID\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"string\" name\u003d\"customerId\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eAmount\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"number\" name\u003d\"amount\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no form field metadata defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/start": { + "post": { + "operationId": "startProcessInstanceByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Start Instance", + "description": "Instantiates a given process definition, starts the latest version of the process definition for tenant.\nProcess variables and business key may be supplied in the request body.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Starting a process instance at its default initial activity", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + }, + "example-2": { + "summary": "Starting a process instance with variables in return", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey", + "withVariablesInReturn": true + } + }, + "example-3": { + "summary": "Starting a process instance at two specific activities", + "value": { + "variables": { + "aProcessVariable": { + "value": "aStringValue", + "type": "String" + } + }, + "businessKey": "myBusinessKey", + "skipCustomListeners": true, + "startInstructions": [ + { + "type": "startBeforeActivity", + "activityId": "activityId", + "variables": { + "var": { + "value": "aVariableValue", + "local": false, + "type": "String" + } + } + }, + { + "type": "startAfterActivity", + "activityId": "anotherActivityId", + "variables": { + "varLocal": { + "value": "anotherVariableValue", + "local": true, + "type": "String" + } + } + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceWithVariablesDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "Response for starting a process instance at its default initial activity", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + }, + "example-2": { + "summary": "Status 200 Response 2", + "description": "Response for starting a process instance with variables in return", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/aProcInstId", + "rel": "self" + } + ], + "id": "aProcInstId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "ended": false, + "suspended": false, + "tenantId": null, + "variables": { + "anotherVariable": { + "type": "Boolean", + "value": true, + "valueInfo": { + "transient": true + } + }, + "aVariable": { + "type": "String", + "value": "aStringValue", + "valueInfo": {} + } + } + } + }, + "example-3": { + "summary": "Status 200 Response 3", + "description": "Response for starting a process instance at two specific activities", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/startForm": { + "get": { + "operationId": "getStartFormByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Key", + "description": "Retrieves the key of the start form for the latest version of the process definition for a tenant.\nThe form key corresponds to the `FormData#formKey` property in the engine.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) for which the form key is to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `process-definition/key/aKey/tenant-id/aTenantId/startForm`", + "value": { + "key": "aFormKey", + "contextPath": "http://localhost:8080/my-process-application/" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no start form defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/statistics": { + "get": { + "operationId": "getActivityStatisticsByProcessDefinitionKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get Activity Instance Statistics", + "description": "Retrieves runtime statistics of the latest version of the given process definition for a tenant,\ngrouped by activities.\nThese statistics include the number of running activity instances, optionally the number of failed jobs\nand also optionally the number of incidents either grouped by incident types or\nfor a specific incident type.\n**Note**: This does not include historic data.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + }, + { + "name": "failedJobs", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Whether to include the number of failed jobs in the result or not. Valid values are `true` or `false`." + }, + { + "name": "incidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Valid values for this property are `true` or `false`.\nIf this property has been set to `true` the result will include the corresponding number of incidents\nfor each occurred incident type.\nIf it is set to `false`, the incidents will not be included in the result.\nCannot be used in combination with `incidentsForType`." + }, + { + "name": "incidentsForType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "If this property has been set with any incident type (i.e., a string value) the result\nwill only include the number of incidents for the assigned incident type.\nCannot be used in combination with `incidents`.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityStatisticsResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/statistics?failedJobs\u003dtrue", + "description": "Request with Query Parameter `failedJobs\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 42, + "incidents": [] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 43, + "incidents": [] + } + ] + }, + "example-2": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/statistics?incidents\u003dtrue", + "description": "Request with Query Parameter `incidents\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 42 + }, + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 43 + }, + { + "incidentType": "anIncident", + "incidentCount": 22 + }, + { + "incidentType": "anotherIncident", + "incidentCount": 15 + } + ] + } + ] + }, + "example-3": { + "summary": "GET /process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/statistics?incidentsForType\u003danIncident", + "description": "Request with Query Parameter `incidentsForType\u003danIncident`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/submit-form": { + "post": { + "operationId": "submitFormByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Submit Start Form", + "description": "Starts the latest version of the process definition for a tenant\nusing a set of process variables and the business key.\nIf the start event has Form Field Metadata defined, the process engine will perform backend validation\nfor any form fields which have validators defined.\nSee [Documentation on Generated Task Forms](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition to submit the form for." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceFormDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/submit-form`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "POST `/process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/submit-form`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/suspended": { + "put": { + "operationId": "updateProcessDefinitionSuspensionStateByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Activate/Suspend by Id", + "description": "Activates or suspends a given process definition by the latest version of\nthe process definition for tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) to be activated/suspended." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "requestBody": { + "description": "**Note**: Unallowed properties are `processDefinitionId` and `processDefinitionKey`.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/suspended`", + "value": { + "suspended": true, + "includeProcessInstances": true, + "executionDate": "2013-11-21T10:49:45T14:42:45" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if the provided `executionDate` parameter doesn\u0027t have the expected format or\nif the `processDefinitionKey` parameter is `null`. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/tenant-id/{tenant-id}/xml": { + "get": { + "operationId": "getProcessDefinitionBpmn20XmlByKeyAndTenantId", + "tags": [ + "Process Definition" + ], + "summary": "Get XML", + "description": "Retrieves latest version the BPMN 2.0 XML of a process definition.\nReturns the XML for the latest version of the process definition for tenant.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) whose XML should be retrieved." + }, + { + "name": "tenant-id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant the process definition belongs to." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-definition/key/aProcessDefinitionKey/tenant-id/aTenantId/xml`", + "value": { + "id": "anProcessDefinitionId", + "bpmn20Xml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n\u003cdefinitions\n xmlns\u003d\"http://www.omg.org/spec/BPMN/20100524/MODEL\"\n xmlns:camunda\u003d\"http://camunda.org/schema/1.0/bpmn\"\n targetNamespace\u003d\"Examples\"\u003e\n \u003cprocess id\u003d\"oneTaskProcess\" isExecutable\u003d\"true\"\u003e\n \u003cstartEvent id\u003d\"theStart\" /\u003e\n \u003csequenceFlow id\u003d\"flow1\" sourceRef\u003d\"theStart\" targetRef\u003d\"theEnd\" /\u003e\n \u003cendEvent id\u003d\"theEnd\" /\u003e\n \u003c/process\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The Process Definition xml cannot be retrieved due to missing permissions on the Process Definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/key/{key}/xml": { + "get": { + "operationId": "getProcessDefinitionBpmn20XmlByKey", + "tags": [ + "Process Definition" + ], + "summary": "Get XML", + "description": "Retrieves latest version the BPMN 2.0 XML of a process definition.", + "parameters": [ + { + "name": "key", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The key of the process definition (the latest version thereof) whose XML should be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-definition/key/aProcessDefinitionKey/xml`", + "value": { + "id": "anProcessDefinitionId", + "bpmn20Xml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n\u003cdefinitions\n xmlns\u003d\"http://www.omg.org/spec/BPMN/20100524/MODEL\"\n xmlns:camunda\u003d\"http://camunda.org/schema/1.0/bpmn\"\n targetNamespace\u003d\"Examples\"\u003e\n \u003cprocess id\u003d\"oneTaskProcess\" isExecutable\u003d\"true\"\u003e\n \u003cstartEvent id\u003d\"theStart\" /\u003e\n \u003csequenceFlow id\u003d\"flow1\" sourceRef\u003d\"theStart\" targetRef\u003d\"theEnd\" /\u003e\n \u003cendEvent id\u003d\"theEnd\" /\u003e\n \u003c/process\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The Process Definition xml cannot be retrieved due to missing permissions on the Process Definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/statistics": { + "get": { + "operationId": "getProcessDefinitionStatistics", + "tags": [ + "Process Definition" + ], + "summary": "Get Process Instance Statistics", + "description": "Retrieves runtime statistics of the process engine, grouped by process definitions.\nThese statistics include the number of running process instances, optionally the number of failed jobs\nand also optionally the number of incidents either grouped by incident types or\nfor a specific incident type.\n**Note**: This does not include historic data.", + "parameters": [ + { + "name": "failedJobs", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Whether to include the number of failed jobs in the result or not. Valid values are `true` or `false`." + }, + { + "name": "incidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Valid values for this property are `true` or `false`.\nIf this property has been set to `true` the result will include the corresponding number of incidents\nfor each occurred incident type.\nIf it is set to `false`, the incidents will not be included in the result.\nCannot be used in combination with `incidentsForType`." + }, + { + "name": "incidentsForType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "If this property has been set with any incident type (i.e., a string value) the result\nwill only include the number of incidents for the assigned incident type.\nCannot be used in combination with `incidents`.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + }, + { + "name": "rootIncidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Valid values for this property are `true` or `false`.\nIf this property has been set to `true` the result will include the corresponding number of\nroot incidents for each occurred incident type.\nIf it is set to `false`, the incidents will not be included in the result.\nCannot be used in combination with `incidentsForType` or `incidents`." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessDefinitionStatisticsResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /process-definition/statistics?failedJobs\u003dtrue", + "description": "Request with Query Parameter `failedJobs\u003dtrue`", + "value": [ + { + "id": "aProcessDefinitionId", + "instances": 123, + "failedJobs": 42, + "definition": { + "id": "aProcessDefinitionId", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": "1.0.0", + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [] + }, + { + "id": "aProcessDefinitionId:2", + "instances": 124, + "failedJobs": 43, + "definition": { + "id": "aProcessDefinitionId:2", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [] + } + ] + }, + "example-2": { + "summary": "GET /process-definition/statistics?incidents\u003dtrue", + "description": "Request with Query Parameter `incidents\u003dtrue`", + "value": [ + { + "id": "aProcessDefinitionId", + "instances": 123, + "failedJobs": 0, + "definition": { + "id": "aProcessDefinitionId", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": "1.0.0", + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 42 + }, + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + }, + { + "id": "aProcessDefinitionId:2", + "instances": 124, + "failedJobs": 0, + "definition": { + "id": "aProcessDefinitionId:2", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 43 + }, + { + "incidentType": "anIncident", + "incidentCount": 22 + }, + { + "incidentType": "anotherIncident", + "incidentCount": 15 + } + ] + } + ] + }, + "example-3": { + "summary": "GET /process-definition/statistics?incidentsForType\u003danIncident", + "description": "Request with Query Parameter `incidentsForType\u003danIncident`", + "value": [ + { + "id": "aProcessDefinitionId", + "instances": 123, + "failedJobs": 0, + "definition": { + "id": "aProcessDefinitionId", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": "1.0.0", + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [ + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + } + ] + }, + "example-4": { + "summary": "GET /process-definition/statistics?rootIncidents\u003dtrue", + "description": "Request with Query Parameter `rootIncidents\u003dtrue`", + "value": [ + { + "id": "aProcessDefinitionId", + "instances": 123, + "failedJobs": 0, + "definition": { + "id": "aProcessDefinitionId", + "key": "aKey", + "category": null, + "description": null, + "name": "aName", + "version": 0, + "resource": null, + "deploymentId": null, + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": "1.0.0", + "historyTimeToLive": null, + "startableInTasklist": false + }, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 62 + }, + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/suspended": { + "put": { + "operationId": "updateProcessDefinitionSuspensionState", + "tags": [ + "Process Definition" + ], + "summary": "Activate/Suspend By Key", + "description": "Activates or suspends process definitions with the given process definition key.", + "requestBody": { + "description": "**Note**: Unallowed property is `processDefinitionId`.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/suspended`", + "value": { + "processDefinitionKey": "aProcessDefinitionKey", + "suspended": true, + "includeProcessInstances": true, + "executionDate": "2013-11-21T10:49:45T14:42:45" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if the provided `executionDate` parameter doesn\u0027t have the expected format or\nif the `processDefinitionKey` parameter is `null`. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}": { + "delete": { + "operationId": "deleteProcessDefinition", + "tags": [ + "Process Definition" + ], + "summary": "Delete", + "description": "Deletes a running process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to be deleted." + }, + { + "name": "cascade", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "`true`, if all process instances, historic process instances and jobs\nfor this process definition should be deleted." + }, + { + "name": "skipCustomListeners", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "`true`, if only the built-in ExecutionListeners should be notified with the end event." + }, + { + "name": "skipIoMappings", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "A boolean value to control whether input/output mappings should be executed during deletion.\n`true`, if input/output mappings should not be invoked." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nProcess definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getProcessDefinition", + "tags": [ + "Process Definition" + ], + "summary": "Get", + "description": "Retrieves a process definition according to the `ProcessDefinition` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response of GET `/process-definition/invoice:1:c3a63aaa-2046-11e7-8f94-34f39ab71d4e`", + "value": { + "id": "invoice:1:c3a63aaa-2046-11e7-8f94-34f39ab71d4e", + "key": "invoice", + "category": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "description": null, + "name": "Invoice Receipt", + "version": 1, + "resource": "invoice.v1.bpmn", + "deploymentId": "c398cd26-2046-11e7-8f94-34f39ab71d4e", + "diagram": null, + "suspended": false, + "tenantId": null, + "versionTag": null, + "historyTimeToLive": 5, + "startableInTasklist": true + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given `id` does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/deployed-start-form": { + "get": { + "operationId": "getDeployedStartForm", + "tags": [ + "Process Definition" + ], + "summary": "Get Deployed Start Form", + "description": "Retrieves the deployed form that can be referenced from a start event.\nFor further information please refer to [User Guide](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#embedded-task-forms).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to get the deployed start form for." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "Resonse for GET `/process-definition/processDefinitionId/deployed-start-form`", + "value": "\u003cform role\u003d\"form\" name\u003d\"invoiceForm\"\n class\u003d\"form-horizontal\"\u003e\n\n \u003cdiv class\u003d\"form-group\"\u003e\n \u003clabel class\u003d\"control-label col-md-4\"\n for\u003d\"creditor\"\u003eCreditor\u003c/label\u003e\n \u003cdiv class\u003d\"col-md-8\"\u003e\n \u003cinput cam-variable-name\u003d\"creditor\"\n cam-variable-type\u003d\"String\"\n id\u003d\"creditor\"\n class\u003d\"form-control\"\n type\u003d\"text\"\n required /\u003e\n \u003cdiv class\u003d\"help\"\u003e\n (e.g. \u0026quot;Great Pizza for Everyone Inc.\u0026quot;)\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003c/form\u003e" + } + } + }, + "application/json": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/json` Responses, a byte stream is returned." + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The form key has wrong format. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The deployed start form cannot be retrieved due to missing permissions on process definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No deployed start form for a given process definition exists. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/diagram": { + "get": { + "operationId": "getProcessDefinitionDiagram", + "tags": [ + "Process Definition" + ], + "summary": "Get Diagram", + "description": "Retrieves the diagram of a process definition.\n\nIf the process definition\u0027s deployment contains an image resource with the same file name\nas the process definition, the deployed image will be returned by the Get Diagram endpoint.\nExample: `someProcess.bpmn` and `someProcess.png`.\nSupported file extentions for the image are: `svg`, `png`, `jpg`, and `gif`.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition." + } + ], + "responses": { + "200": { + "description": "Request successful. The image diagram of this process.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "defaults to `application/octet-stream` if the file suffix is unknown" + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information image/png, image/gif, ... " + } + } + } + }, + "204": { + "description": "The process definition doesn\u0027t have an associated diagram." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/form-variables": { + "get": { + "operationId": "getStartFormVariables", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Variables", + "description": "Retrieves the start form variables for a process definition\n(only if they are defined via the \n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms) approach).\nThe start form variables take form data specified on the start event into account.\nIf form fields are defined, the variable types and default values\nof the form fields are taken into account.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to retrieve the variables for." + }, + { + "name": "variableNames", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of variable names. Allows restricting the list of requested\nvariables to the variable names in the list. It is best practice to restrict the\nlist of variables to the variables actually required by the form in order to\nminimize fetching of data. If the query parameter is ommitted all variables are\nfetched. If the query parameter contains non-existent variable names, the variable\nnames are ignored." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store\ncustom Java objects) should be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and\ntransformed to JSON using [Jackson\u0027s](http://jackson.codehaus.org/) POJO/bean\nproperty introspection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string\ncontaining XML.\n\n**Note**: While true is the default value for reasons of backward compatibility, we\nrecommend setting this parameter to false when developing web applications that are\nindependent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `/process-definition/anId/form-variables`", + "value": { + "amount": { + "type": "integer", + "value": 5, + "valueInfo": {} + }, + "firstName": { + "type": "String", + "value": "Jonny", + "valueInfo": {} + } + } + } + } + } + }, + "description": "Request successful. A JSON object containing a property for each variable returned." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The id is null or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/history-time-to-live": { + "put": { + "operationId": "updateHistoryTimeToLiveByProcessDefinitionId", + "tags": [ + "Process Definition" + ], + "summary": "Update History Time to Live", + "description": "Updates history time to live for process definition.\nThe field is used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to change history time to live." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryTimeToLiveDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/aProcessDefinitionId/history-time-to-live`", + "value": { + "historyTimeToLive": 5 + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the request parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/rendered-form": { + "get": { + "operationId": "getRenderedStartForm", + "tags": [ + "Process Definition" + ], + "summary": "Get Rendered Start Form", + "description": "Retrieves the rendered form for a process definition.\nThis method can be used to get the HTML rendering of a\n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to get the rendered start form for." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "A `/process-definition/anId/rendered-form` HTML\n GET response body providing the rendered (generated) form content.", + "value": "\u003cform class\u003d\"form-horizontal\"\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eCustomer ID\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"string\" name\u003d\"customerId\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eAmount\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"number\" name\u003d\"amount\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no form field metadata defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/restart": { + "post": { + "operationId": "restartProcessInstance", + "tags": [ + "Process Definition" + ], + "summary": "Restart Process Instance", + "description": "Restarts process instances that were canceled or terminated synchronously.\nCan also restart completed process instances.\nIt will create a new instance using the original instance information.\nTo execute the restart asynchronously, use the\n[Restart Process Instance Async](https://docs.camunda.org/manual/7.15/reference/rest/process-definition/post-restart-process-instance-async/) method.\n\nFor more information about the difference between synchronous and asynchronous execution,\nplease refer to the related section of the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-instance-restart/#execution).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition of the process instances to restart." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestartProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Restarting one or more Process Instances with known processInstanceIds", + "value": { + "instructions": [ + { + "type": "startAfterActivity", + "activityId": "aUserTask" + } + ], + "processInstanceIds": [ + "aProcessInstance", + "anotherProcessInstance" + ], + "initialVariables": true, + "skipCustomListeners": true, + "withoutBusinessKey": true + } + }, + "example-2": { + "summary": "Restarting one or more Process Instances using a historicProcessInstanceQuery", + "value": { + "instructions": [ + { + "type": "startAfterActivity", + "activityId": "aUserTask" + } + ], + "historicProcessInstanceQuery": { + "processDefinitionId": "aProcessDefinitionId", + "processInstanceBusinessKey": "businessKey" + }, + "initialVariables": true, + "skipCustomListeners": true, + "withoutBusinessKey": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case following parameters are missing: `instructions`, `activityId` or `transitionId`,\n`processInstanceIds` or `historicProcessInstanceQuery`, an exception of type `InvalidRequestException` is returned. \nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/restart-async": { + "post": { + "operationId": "restartProcessInstanceAsyncOperation", + "tags": [ + "Process Definition" + ], + "summary": "Restart Process Instance Async", + "description": "Restarts process instances that were canceled or terminated asynchronously.\nCan also restart completed process instances.\nIt will create a new instance using the original instance information.\nTo execute the restart asynchronously, use the\n[Restart Process Instance](https://docs.camunda.org/manual/7.15/reference/rest/process-definition/post-restart-process-instance-sync/) method.\n\nFor more information about the difference between synchronous and asynchronous execution,\nplease refer to the related section of the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-instance-restart/#execution).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition of the process instances to restart." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestartProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Restarting one or more Process Instances with known processInstanceIds", + "value": { + "instructions": [ + { + "type": "startAfterActivity", + "activityId": "aUserTask" + } + ], + "processInstanceIds": [ + "aProcessInstance", + "anotherProcessInstance" + ], + "initialVariables": true, + "skipCustomListeners": true, + "withoutBusinessKey": true + } + }, + "example-2": { + "summary": "Restarting one or more Process Instances using a historicProcessInstanceQuery", + "value": { + "instructions": [ + { + "type": "startAfterActivity", + "activityId": "aUserTask" + } + ], + "historicProcessInstanceQuery": { + "processDefinitionId": "aProcessDefinitionId", + "processInstanceBusinessKey": "businessKey" + }, + "initialVariables": true, + "skipCustomListeners": true, + "withoutBusinessKey": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case following parameters are missing: `instructions`, `activityId` or `transitionId`,\n`processInstanceIds` or `historicProcessInstanceQuery`,\nan exception of type `InvalidRequestException` is returned. \nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/start": { + "post": { + "operationId": "startProcessInstance", + "tags": [ + "Process Definition" + ], + "summary": "Start Instance", + "description": "Instantiates a given process definition.\nProcess variables and business key may be supplied in the request body.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to be retrieved." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Starting a process instance at its default initial activity", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + }, + "example-2": { + "summary": "Starting a process instance with variables in return", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey", + "withVariablesInReturn": true + } + }, + "example-3": { + "summary": "Starting a process instance at two specific activities", + "value": { + "variables": { + "aProcessVariable": { + "value": "aStringValue", + "type": "String" + } + }, + "businessKey": "myBusinessKey", + "skipCustomListeners": true, + "startInstructions": [ + { + "type": "startBeforeActivity", + "activityId": "activityId", + "variables": { + "var": { + "value": "aVariableValue", + "local": false, + "type": "String" + } + } + }, + { + "type": "startAfterActivity", + "activityId": "anotherActivityId", + "variables": { + "varLocal": { + "value": "anotherVariableValue", + "local": true, + "type": "String" + } + } + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceWithVariablesDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "Response for starting a process instance at its default initial activity", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + }, + "example-2": { + "summary": "Status 200 Response 2", + "description": "Response for starting a process instance with variables in return", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/aProcInstId", + "rel": "self" + } + ], + "id": "aProcInstId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "ended": false, + "suspended": false, + "tenantId": null, + "variables": { + "anotherVariable": { + "type": "Boolean", + "value": true, + "valueInfo": { + "transient": true + } + }, + "aVariable": { + "type": "String", + "value": "aStringValue", + "valueInfo": {} + } + } + } + }, + "example-3": { + "summary": "Status 200 Response 3", + "description": "Response for starting a process instance at two specific activities", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/startForm": { + "get": { + "operationId": "getStartForm", + "tags": [ + "Process Definition" + ], + "summary": "Get Start Form Key", + "description": "Retrieves the key of the start form for a process definition.\nThe form key corresponds to the `FormData#formKey` property in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to get the start form key for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `process-definition/anId/startForm`", + "value": { + "key": "aFormKey", + "contextPath": "http://localhost:8080/my-process-application/" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition has no start form defined. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/statistics": { + "get": { + "operationId": "getActivityStatistics", + "tags": [ + "Process Definition" + ], + "summary": "Get Activity Instance Statistics", + "description": "Retrieves runtime statistics of a given process definition, grouped by activities.\nThese statistics include the number of running activity instances, optionally the number of failed jobs\nand also optionally the number of incidents either grouped by incident types or for a specific incident type.\n**Note**: This does not include historic data.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition." + }, + { + "name": "failedJobs", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Whether to include the number of failed jobs in the result or not. Valid values are `true` or `false`." + }, + { + "name": "incidents", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Valid values for this property are `true` or `false`.\nIf this property has been set to `true` the result will include the corresponding number of incidents\nfor each occurred incident type.\nIf it is set to `false`, the incidents will not be included in the result.\nCannot be used in combination with `incidentsForType`." + }, + { + "name": "incidentsForType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "If this property has been set with any incident type (i.e., a string value) the result\nwill only include the number of incidents for the assigned incident type.\nCannot be used in combination with `incidents`.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityStatisticsResultDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /process-definition/aProcessDefinitionId/statistics?failedJobs\u003dtrue", + "description": "Request with Query Parameter `failedJobs\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 42, + "incidents": [] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 43, + "incidents": [] + } + ] + }, + "example-2": { + "summary": "GET /process-definition/aProcessDefinitionId/statistics?incidents\u003dtrue", + "description": "Request with Query Parameter `incidents\u003dtrue`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 42 + }, + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + }, + { + "id": "anotherActivity", + "instances": 124, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "failedJob", + "incidentCount": 43 + }, + { + "incidentType": "anIncident", + "incidentCount": 22 + }, + { + "incidentType": "anotherIncident", + "incidentCount": 15 + } + ] + } + ] + }, + "example-3": { + "summary": "GET /process-definition/aProcessDefinitionId/statistics?incidentsForType\u003danIncident", + "description": "Request with Query Parameter `incidentsForType\u003danIncident`", + "value": [ + { + "id": "anActivity", + "instances": 123, + "failedJobs": 0, + "incidents": [ + { + "incidentType": "anIncident", + "incidentCount": 20 + } + ] + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/submit-form": { + "post": { + "operationId": "submitForm", + "tags": [ + "Process Definition" + ], + "summary": "Submit Start Form", + "description": "Starts a process instance using a set of process variables and the business key.\nIf the start event has Form Field Metadata defined, the process engine will perform backend validation\nfor any form fields which have validators defined.\nSee [Documentation on Generated Task Forms](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to submit the form for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProcessInstanceFormDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-definition/aProcessDefinitionId/submit-form`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + }, + "businessKey": "myBusinessKey" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "description": "POST `/process-definition/aProcessDefinitionId/submit-form`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/rest-test/process-instance/anId", + "rel": "self" + } + ], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "myBusinessKey", + "caseInstanceId": null, + "tenantId": null, + "ended": false, + "suspended": false + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created due to an invalid variable value,\nfor example if the value could not be parsed to an `Integer` value or\nthe passed variable type is not supported.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The instance could not be created successfully.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/suspended": { + "put": { + "operationId": "updateProcessDefinitionSuspensionStateById", + "tags": [ + "Process Definition" + ], + "summary": "Activate/Suspend By Id", + "description": "Activates or suspends a given process definition by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition to activate or suspend." + } + ], + "requestBody": { + "description": "**Note**: Unallowed properties are `processDefinitionId` and `processDefinitionKey`.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-definition/aProcessDefinitionId/suspended`", + "value": { + "suspended": true, + "includeProcessInstances": true, + "executionDate": "2013-11-21T10:49:45T14:42:45" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid,\nfor example if the provided `executionDate` parameter doesn\u0027t have the expected format or\nif the `processDefinitionKey` parameter is `null`. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given key does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-definition/{id}/xml": { + "get": { + "operationId": "getProcessDefinitionBpmn20Xml", + "tags": [ + "Process Definition" + ], + "summary": "Get XML", + "description": "Retrieves the BPMN 2.0 XML of a process definition.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process definition." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessDefinitionDiagramDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-definition/id/aProcessDefinitionId/xml`", + "value": { + "id": "anProcessDefinitionId", + "bpmn20Xml": "\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n\u003cdefinitions\n xmlns\u003d\"http://www.omg.org/spec/BPMN/20100524/MODEL\"\n xmlns:camunda\u003d\"http://camunda.org/schema/1.0/bpmn\"\n targetNamespace\u003d\"Examples\"\u003e\n \u003cprocess id\u003d\"oneTaskProcess\" isExecutable\u003d\"true\"\u003e\n \u003cstartEvent id\u003d\"theStart\" /\u003e\n \u003csequenceFlow id\u003d\"flow1\" sourceRef\u003d\"theStart\" targetRef\u003d\"theEnd\" /\u003e\n \u003cendEvent id\u003d\"theEnd\" /\u003e\n \u003c/process\u003e\n \u003c/definitions\u003e" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The Process Definition xml cannot be retrieved due to missing permissions on the Process Definition resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process definition with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/process-instance": { + "get": { + "operationId": "getProcessInstances", + "tags": [ + "Process Instance" + ], + "summary": "Get List", + "description": "Queries for process instances that fulfill given parameters.\nParameters may be static as well as dynamic runtime properties of process instances.\nThe size of the result set can be retrieved by using the Get Instance Count method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "instanceId", + "definitionKey", + "definitionId", + "tenantId", + "businessKey" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process instance ids." + }, + { + "name": "businessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key." + }, + { + "name": "businessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by case instance id." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the instances run on." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition keys.\nA process instance must have one of the given process definition keys." + }, + { + "name": "processDefinitionKeyNotIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Exclude instances by a comma-separated list of process definition keys.\nA process instance must not have one of the given process definition keys." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "superProcessInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given process instance.\nTakes a process instance id." + }, + { + "name": "subProcessInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that have the given process instance as a sub process instance.\nTakes a process instance id." + }, + { + "name": "superCaseInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance.\nTakes a case instance id." + }, + { + "name": "subCaseInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that have the given case instance as a sub case instance.\nTakes a case instance id." + }, + { + "name": "active", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include active process instances. Value may only be true,\nas false is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include suspended process instances. Value may only be true,\nas false is the default behavior." + }, + { + "name": "withIncident", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Filter by presence of incidents. Selects only process instances that have an incident." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. A process instance must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include process instances which belong to no tenant." + }, + { + "name": "processDefinitionWithoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include process instances which process definition has no tenant id." + }, + { + "name": "activityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of activity ids.\nA process instance must currently wait in a leaf activity with one of the given activity ids." + }, + { + "name": "rootProcessInstances", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are top level process instances." + }, + { + "name": "leafProcessInstances", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are leaf instances. (i.e. don\u0027t have any sub instances)." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that have variables with certain values.\nVariable filtering expressions are comma-separated and are structured as follows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable names in this query case-insensitively.\nIf set to true variableName and variablename are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable values in this query case-insensitively.\nIf set to true variableValue and variablevalue are treated as equal." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/process-instance?variables\u003dmyVariable_eq_camunda,mySecondVariable_neq_aBadValue`", + "value": [ + { + "links": [], + "id": "anId", + "definitionId": "aProcDefId", + "businessKey": "aKey", + "caseInstanceId": "aCaseInstanceId", + "ended": false, + "suspended": false, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid,\nfor example if a sortOrder parameter is supplied, but no sortBy, or if an invalid operator for variable comparison is used." + } + } + }, + "post": { + "operationId": "queryProcessInstances", + "tags": [ + "Process Instance" + ], + "summary": "Get List (POST)", + "description": "Queries for process instances that fulfill given parameters through a JSON object.\nThis method is slightly more powerful than the Get Instances method because\nit allows filtering by multiple process variables of types `string`, `number` or `boolean`.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance` Request Body 1", + "value": { + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ], + "processDefinitionId": "aProcessDefinitionId", + "sorting": [ + { + "sortBy": "definitionKey", + "sortOrder": "asc" + }, + { + "sortBy": "instanceId", + "sortOrder": "desc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProcessInstanceDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": [ + { + "links": [], + "id": "anId", + "definitionId": "aProcessDefinitionId", + "businessKey": "aKey", + "caseInstanceId": "aCaseInstanceId", + "ended": false, + "suspended": false, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid,\nfor example if a sortOrder parameter is supplied, but no sortBy, or if an invalid operator for variable comparison is used." + } + } + } + }, + "/process-instance/count": { + "get": { + "operationId": "getProcessInstancesCount", + "tags": [ + "Process Instance" + ], + "summary": "Get List Count", + "description": "Queries for the number of process instances that fulfill given parameters.", + "parameters": [ + { + "name": "processInstanceIds", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process instance ids." + }, + { + "name": "businessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key." + }, + { + "name": "businessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by case instance id." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the key of the process definition the instances run on." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process definition keys.\nA process instance must have one of the given process definition keys." + }, + { + "name": "processDefinitionKeyNotIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Exclude instances by a comma-separated list of process definition keys.\nA process instance must not have one of the given process definition keys." + }, + { + "name": "deploymentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the deployment the id belongs to." + }, + { + "name": "superProcessInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given process instance.\nTakes a process instance id." + }, + { + "name": "subProcessInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that have the given process instance as a sub process instance.\nTakes a process instance id." + }, + { + "name": "superCaseInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that are sub process instances of the given case instance.\nTakes a case instance id." + }, + { + "name": "subCaseInstance", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all process instances that have the given case instance as a sub case instance.\nTakes a case instance id." + }, + { + "name": "active", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include active process instances. Value may only be true,\nas false is the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include suspended process instances. Value may only be true,\nas false is the default behavior." + }, + { + "name": "withIncident", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Filter by presence of incidents. Selects only process instances that have an incident." + }, + { + "name": "incidentId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident id." + }, + { + "name": "incidentType", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident type.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types)\nfor a list of incident types." + }, + { + "name": "incidentMessage", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message. Exact match." + }, + { + "name": "incidentMessageLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the incident message that the parameter is a substring of." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids. A process instance must have one of the given tenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include process instances which belong to no tenant." + }, + { + "name": "processDefinitionWithoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include process instances which process definition has no tenant id." + }, + { + "name": "activityIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of activity ids.\nA process instance must currently wait in a leaf activity with one of the given activity ids." + }, + { + "name": "rootProcessInstances", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are top level process instances." + }, + { + "name": "leafProcessInstances", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Restrict the query to all process instances that are leaf instances. (i.e. don\u0027t have any sub instances)." + }, + { + "name": "variables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include process instances that have variables with certain values.\nVariable filtering expressions are comma-separated and are structured as follows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable names in this query case-insensitively.\nIf set to true variableName and variablename are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable values in this query case-insensitively.\nIf set to true variableValue and variablevalue are treated as equal." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/process-instance/count?variables\u003dmyVariable_eq_camunda`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example an invalid operator for variable comparison is used." + } + } + }, + "post": { + "operationId": "queryProcessInstancesCount", + "tags": [ + "Process Instance" + ], + "summary": "Get List Count (POST)", + "description": "Queries for the number of process instances that fulfill the given parameters.\nThis method takes the same message body as the Get Instances (POST) method and\ntherefore it is slightly more powerful than the Get Instance Count method.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/count` Request Body 1", + "value": { + "variables": [ + { + "name": "myVariable", + "operator": "eq", + "value": "camunda" + }, + { + "name": "mySecondVariable", + "operator": "neq", + "value": 124 + } + ], + "processDefinitionId": "aProcessDefinitionId" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if an invalid operator for variable comparison is used." + } + } + } + }, + "/process-instance/delete": { + "post": { + "operationId": "deleteProcessInstancesAsyncOperation", + "tags": [ + "Process Instance" + ], + "summary": "Delete Async (POST)", + "description": "Deletes multiple process instances asynchronously (batch).", + "requestBody": { + "description": "**Unallowed property**: `historicProcessInstanceQuery`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteProcessInstancesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/delete` Request Body 1", + "value": { + "deleteReason": "aReason", + "processInstanceIds": [ + "aProcess", + "secondProcess" + ], + "skipCustomListeners": true, + "skipSubprocesses": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, i.e., neither processInstanceIds, nor processInstanceQuery is present" + } + } + } + }, + "/process-instance/delete-historic-query-based": { + "post": { + "operationId": "deleteAsyncHistoricQueryBased", + "tags": [ + "Process Instance" + ], + "summary": "Delete Async Historic Query Based (POST)", + "description": "Deletes a set of process instances asynchronously (batch) based on a historic process instance query.", + "requestBody": { + "description": "**Unallowed property**: `processInstanceQuery`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteProcessInstancesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/delete-historic-query-based` Request Body 1", + "value": { + "deleteReason": "aReason", + "historicProcessInstanceQuery": { + "startedBefore": "2017-04-28T11:24:37.765+0200" + }, + "skipCustomListeners": true, + "skipSubprocesses": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response 1", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, i.e., neither processInstanceIds, nor historicProcessInstanceQuery is present" + } + } + } + }, + "/process-instance/job-retries": { + "post": { + "operationId": "setRetriesByProcess", + "tags": [ + "Process Instance" + ], + "summary": "Set Job Retries Async (POST)", + "description": "Create a batch to set retries of jobs associated with given processes asynchronously.", + "requestBody": { + "description": "Please note that if both processInstances and processInstanceQuery are provided,\nthen the resulting execution will be performed on the union of these sets.\n**Unallowed property**: `historicProcessInstanceQuery`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetJobRetriesByProcessDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/job-retries` Request Body 1", + "value": { + "retries": 5, + "processInstances": [ + "aProcess", + "secondProcess" + ], + "processInstanceQuery": { + "processDefinitionId": "aProcessDefinitionId" + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "batchJobsPerSeed": 100, + "jobsCreated": 10, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "suspended": false, + "tenantId": "aTenantId", + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if neither processInstanceIds, nor processInstanceQuery is present.\nOr if the retry count is not specified." + } + } + } + }, + "/process-instance/job-retries-historic-query-based": { + "post": { + "operationId": "setRetriesByProcessHistoricQueryBased", + "tags": [ + "Process Instance" + ], + "summary": "Set Job Retries Async Historic Query Based (POST)", + "description": "Create a batch to set retries of jobs asynchronously based on a historic process instance query.", + "requestBody": { + "description": "Please note that if both processInstances and historicProcessInstanceQuery are provided,\nthen the resulting execution will be performed on the union of these sets.\n**Unallowed property**: `processInstanceQuery`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetJobRetriesByProcessDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/job-retries-historic-query-based` Request Body 1", + "value": { + "retries": 5, + "historicProcessInstanceQuery": { + "startedBefore": "2017-04-28T11:24:37.769+0200" + }, + "processInstances": [ + "aProcess", + "secondProcess" + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the query parameters are invalid, for example if neither processInstanceIds, nor historicProcessInstanceQuery is present.\nOr if the retry count is not specified." + } + } + } + }, + "/process-instance/suspended": { + "put": { + "operationId": "updateSuspensionState", + "tags": [ + "Process Instance" + ], + "summary": "Activate/Suspend In Group", + "description": "Activates or suspends process instances by providing certain criteria:\n\n# Activate/Suspend Process Instance By Process Definition Id\n* `suspend`\n* `processDefinitionId`\n\n# Activate/Suspend Process Instance By Process Definition Key\n\n* `suspend`\n* `processDefinitionKey`\n* `processDefinitionTenantId`\n* `processDefinitionWithoutTenantId`\n\n# Activate/Suspend Process Instance In Group\n* `suspend`\n* `processInstanceIds`\n* `processInstanceQuery`\n* `historicProcessInstanceQuery`", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceSuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-instance/suspended`", + "description": "Suspend Process Instance By Process Definition Id", + "value": { + "processDefinitionId": "aProcDefId", + "suspended": true + } + }, + "example-2": { + "summary": "PUT `/process-instance/suspended`", + "description": "Suspend Process Instance By Process Definition Key", + "value": { + "processDefinitionKey": "aProcDefKey", + "suspended": true + } + }, + "example-3": { + "summary": "PUT `/process-instance/suspended`", + "description": "Suspend Process Instance In Group", + "value": { + "processInstanceIds": [ + "processInstanceId1", + "processInstanceIdN" + ], + "suspended": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the request parameters are invalid,\nfor example if the provided processDefinitionId or processDefinitionKey parameter is null." + } + } + } + }, + "/process-instance/suspended-async": { + "post": { + "operationId": "updateSuspensionStateAsyncOperation", + "tags": [ + "Process Instance" + ], + "summary": "Activate/Suspend In Batch", + "description": "Activates or suspends process instances asynchronously with a list of process instance ids,\na process instance query, and/or a historical process instance query.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceSuspensionStateAsyncDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/suspended-async`", + "description": "Suspend Process Instance In Batch", + "value": { + "processInstanceIds": [ + "processInstanceId1", + "processInstanceIdN" + ], + "suspended": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nReturned if some of the request parameters are invalid,\nfor example if the provided processDefinitionId or processDefinitionKey parameter is null." + } + } + } + }, + "/process-instance/variables-async": { + "post": { + "operationId": "setVariablesAsyncOperation", + "tags": [ + "Process Instance" + ], + "summary": "Set Variables Async (POST)", + "description": "Update or create runtime process variables in the root scope of process instances.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetVariablesAsyncDto" + }, + "examples": { + "example-1": { + "summary": "POST /process-instance/variables-async", + "description": "Set variables to process instances in a batch", + "value": { + "processInstanceIds": [ + "b4d2ad98-7240-11e9-98b7-be5e0f7575b7" + ], + "processInstanceQuery": { + "processDefinitionKey": "my-process-definition-key" + }, + "variables": { + "myVariableName": { + "value": "myStringValue" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "120b568d-724a-11e9-98b7-be5e0f7575b7", + "type": "set-variables", + "totalJobs": 12, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "120b5690-724a-11e9-98b7-be5e0f7575b7", + "monitorJobDefinitionId": "120b568f-724a-11e9-98b7-be5e0f7575b7", + "batchJobDefinitionId": "120b568e-724a-11e9-98b7-be5e0f7575b7", + "tenantId": "accounting", + "suspended": false, + "createUserId": null + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\n* The variable value or type is invalid, for example if the value could not be parsed to an Integer value or\nthe passed variable type is not supported\n* If none of `processInstanceIds`, `processInstanceQuery` and `historicProcessInstanceQuery` is given\n* If no or an empty array of `variables` is given\n* If no process instance ids where found\n* If a transient variable is set\n* If the engine config flag `javaSerializationFormatEnabled` is `false` and a Java serialized variable is given" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "Returned if the user is not allowed to create the batch.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the\nerror response format." + } + } + } + }, + "/process-instance/{id}": { + "delete": { + "operationId": "deleteProcessInstance", + "tags": [ + "Process Instance" + ], + "summary": "Delete", + "description": "Deletes a running process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to be deleted." + }, + { + "name": "skipCustomListeners", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to true, the custom listeners will be skipped." + }, + { + "name": "skipIoMappings", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to true, the input/output mappings will be skipped." + }, + { + "name": "skipSubprocesses", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to true, subprocesses related to deleted processes will be skipped." + }, + { + "name": "failIfNotExists", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "If set to false, the request will still be successful if the process id is not found." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not found\nProcess instance with given id does not exist. " + } + } + }, + "get": { + "operationId": "getProcessInstance", + "tags": [ + "Process Instance" + ], + "summary": "Get Process Instance", + "description": "Retrieves a process instance by id, according to the `ProcessInstance` interface in the engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-instance/aProcessInstanceId`", + "value": { + "id": "aProcessInstanceId", + "definitionId": "aProcDefId", + "businessKey": "aKey", + "caseInstanceId": "aCaseInstanceId", + "ended": false, + "suspended": false, + "tenantId": null + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process instance with given id does not exist. See the \n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format. " + } + } + } + }, + "/process-instance/{id}/activity-instances": { + "get": { + "operationId": "getActivityInstanceTree", + "tags": [ + "Process Instance" + ], + "summary": "Get Activity Instance", + "description": "Retrieves an Activity Instance (Tree) for a given process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance for which the activity instance should be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityInstanceDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-instance/aProcessInstanceId/activity-instances`", + "value": { + "id": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6", + "parentActivityInstanceId": null, + "activityId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6", + "activityType": "processDefinition", + "processInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6", + "processDefinitionId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6", + "childActivityInstances": [ + { + "id": "approveInvoice:eca89509-f70c-11e9-8777-e4a7a094a9d6", + "parentActivityInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6", + "activityId": "approveInvoice", + "activityType": "userTask", + "processInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6", + "processDefinitionId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6", + "childActivityInstances": [], + "childTransitionInstances": [], + "executionIds": [ + "eca75c6b-f70c-11e9-8777-e4a7a094a9d6" + ], + "activityName": "Approve Invoice", + "incidentIds": [ + "648d7e21-f71c-11e9-a725-e4a7a094a9d6" + ], + "incidents": [ + { + "id": "648d7e21-f71c-11e9-a725-e4a7a094a9d6", + "activityId": "AttachedTimerBoundaryEvent" + } + ] + } + ], + "childTransitionInstances": [], + "executionIds": [ + "eca75c6b-f70c-11e9-8777-e4a7a094a9d6" + ], + "activityName": "Invoice Receipt", + "incidentIds": null, + "incidents": null + } + } + } + } + }, + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process instance with given id does not exist." + } + } + } + }, + "/process-instance/{id}/modification": { + "post": { + "operationId": "modifyProcessInstance", + "tags": [ + "Process Instance" + ], + "summary": "Modify Process Instance Execution State", + "description": "Submits a list of modification instructions to change a process instance\u0027s execution state.\nA modification instruction is one of the following:\n\n* Starting execution before an activity\n* Starting execution after an activity on its single outgoing sequence flow\n* Starting execution on a specific sequence flow\n* Canceling an activity instance, transition instance, or all instances (activity or transition) for an activity\n\nInstructions are executed immediately and in the order they are provided in this request\u0027s body.\nVariables can be provided with every starting instruction.\n\nThe exact semantics of modification can be read about in the [User guide](https://docs.camunda.org/manual/develop/user-guide/process-engine/process-instance-modification/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to modify." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceModificationDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/aProcessInstanceId/modification`", + "value": { + "skipCustomListeners": true, + "skipIoMappings": true, + "instructions": [ + { + "type": "startBeforeActivity", + "activityId": "activityId", + "variables": { + "var": { + "value": "aVariableValue", + "local": false, + "type": "String" + }, + "varLocal": { + "value": "anotherVariableValue", + "local": true, + "type": "String" + } + } + }, + { + "type": "cancel", + "activityInstanceId": "anActivityInstanceId" + } + ], + "annotation": "Modified to resolve an error." + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "At least one modification instruction misses required parameters." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The modification cannot be performed, for example because it starts a failing activity." + } + } + } + }, + "/process-instance/{id}/modification-async": { + "post": { + "operationId": "modifyProcessInstanceAsyncOperation", + "tags": [ + "Process Instance" + ], + "summary": "Modify Process Instance Execution State Async", + "description": "Submits a list of modification instructions to change a process instance\u0027s execution state async.\nA modification instruction is one of the following:\n\n* Starting execution before an activity\n* Starting execution after an activity on its single outgoing sequence flow\n* Starting execution on a specific sequence flow\n* Cancelling an activity instance, transition instance, or all instances (activity or transition) for an activity\n\nInstructions are executed asynchronous and in the order they are provided in this request\u0027s body.\nVariables can be provided with every starting instruction.\n\nThe exact semantics of modification can be read about in the\n[User guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-instance-modification/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to modify." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProcessInstanceModificationDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/aProcessInstanceId/modification-async`", + "value": { + "skipCustomListeners": true, + "skipIoMappings": true, + "instructions": [ + { + "type": "startBeforeActivity", + "activityId": "activityId" + }, + { + "type": "cancel", + "activityInstanceId": "anActivityInstanceId" + } + ], + "annotation": "Modified to resolve an error." + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "aBatchId", + "type": "aBatchType", + "totalJobs": 10, + "jobsCreated": 10, + "batchJobsPerSeed": 100, + "invocationsPerBatchJob": 1, + "seedJobDefinitionId": "aSeedJobDefinitionId", + "monitorJobDefinitionId": "aMonitorJobDefinitionId", + "batchJobDefinitionId": "aBatchJobDefinitionId", + "tenantId": "aTenantId", + "suspended": false, + "createUserId": "demo" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nAt least one modification instruction misses required parameters." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "Forbidden\nIf the user is not allowed to execute batches. See the Introduction for the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The modification cannot be performed, for example because it starts a failing activity." + } + } + } + }, + "/process-instance/{id}/suspended": { + "put": { + "operationId": "updateSuspensionStateById", + "tags": [ + "Process Instance" + ], + "summary": "Activate/Suspend Process Instance By Id", + "description": "Activates or suspends a given process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to activate or suspend." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuspensionStateDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/process-instance/aProcessInstanceId/suspended`", + "value": { + "suspended": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + } + } + } + }, + "/process-instance/{id}/variables": { + "get": { + "operationId": "getProcessInstanceVariables", + "tags": [ + "Process Instance" + ], + "summary": "Get Process Variables", + "description": "Retrieves all variables of a given process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to retrieve the variables from." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\nNote: While true is the default value for reasons of backward compatibility, we recommend setting this parameter to false\nwhen developing web applications that are independent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/process-instance/aProcessInstanceId/variables`", + "value": { + "aVariableKey": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + }, + "example-2": { + "summary": "GET `/process-instance/aProcessInstanceId/variables?deserializeValue\u003dfalse`", + "value": { + "aVariableKey": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Process instance with given id does not exist." + } + } + }, + "post": { + "operationId": "modifyProcessInstanceVariables", + "tags": [ + "Process Instance" + ], + "summary": "Update/Delete Process Variables", + "description": "Updates or deletes the variables of a process instance by id. Updates precede deletions.\nSo, if a variable is updated AND deleted, the deletion overrides the update.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to set variables for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchVariablesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/aProcessInstanceId/variables`", + "description": "Status 204 Response: No content.", + "value": { + "modifications": { + "aVariable": { + "value": "aValue", + "type": "String" + }, + "anotherVariable": { + "value": 42, + "type": "Integer" + } + }, + "deletions": [ + "aThirdVariable", + "FourthVariable" + ] + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nThe variable value or type is invalid, for example if the value could not be parsed to an Integer value or\nthe passed variable type is not supported." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Update or delete could not be executed, for example because the process instance does not exist." + } + } + } + }, + "/process-instance/{id}/variables/{varName}": { + "delete": { + "operationId": "deleteProcessInstanceVariable", + "tags": [ + "Process Instance" + ], + "summary": "Delete Process Variable", + "description": "Deletes a variable of a process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to delete the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to delete." + } + ], + "responses": { + "204": { + "description": "Request successful." + } + } + }, + "get": { + "operationId": "getProcessInstanceVariable", + "tags": [ + "Process Instance" + ], + "summary": "Get Process Variable", + "description": "Retrieves a variable of a given process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + }, + { + "name": "deserializeValue", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\nNote: While true is the default value for reasons of backward compatibility, we recommend setting this parameter to false\nwhen developing web applications that are independent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "GET `/process-instance/aProcessInstanceId/variables/myObject123`", + "value": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + }, + "example-2": { + "summary": "GET `/process-instance/aProcessInstanceId/variables/myObject123?deserializeValue\u003dfalse`", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nVariable with given id does not exist." + } + } + }, + "put": { + "operationId": "setProcessInstanceVariable", + "tags": [ + "Process Instance" + ], + "summary": "Update Process Variable", + "description": "Sets a variable of a given process instance by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to set the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to set." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "PUT /process-instance/aProcessInstanceId/variables/aVarName", + "description": "Status 204. No content.", + "value": { + "value": "someValue", + "type": "String" + } + }, + "example-2": { + "summary": "PUT /process-instance/aProcessInstanceId/variables/aVarName", + "description": "Status 204. No content.", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nThe variable value or type is invalid, for example if the value could not be parsed to an Integer value or\nthe passed variable type is not supported." + } + } + } + }, + "/process-instance/{id}/variables/{varName}/data": { + "get": { + "operationId": "getProcessInstanceVariableBinary", + "tags": [ + "Process Instance" + ], + "summary": "Get Process Variable (Binary)", + "description": "Retrieves the content of a Process Variable by the Process Instance id and the Process Variable name.\nApplicable for byte array or file Process Variables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "responses": { + "200": { + "description": "Request successful.\n For binary variables or files without any MIME type information, a byte stream is returned.\n File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For binary variables or files without any MIME type information, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "binary variable: Status 200", + "value": "Content-Type: application/octet-stream" + } + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "binary", + "description": "File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set." + }, + "examples": { + "example-1": { + "summary": "file variable: Status 200", + "value": "Content-Type: text/plain; charset\u003dUTF-8. Content-Disposition: attachment; filename\u003d\"someFile.txt\"" + } + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nA Process Variable with the given id exists but does not serialize as binary data." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Not Found\nA Process Variable with the given id does not exist. " + } + } + }, + "post": { + "operationId": "setProcessInstanceVariableBinary", + "tags": [ + "Process Instance" + ], + "summary": "Update Process Variable (Binary)", + "description": "Sets the serialized value for a binary variable or the binary value for a file variable.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the process instance to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "requestBody": { + "description": "For binary variables a multipart form submit with the following parts:", + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormVariableBinaryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/process-instance/aProcessInstanceId/variables/aVarName/data` (1)", + "description": "Post binary content of a byte array variable.", + "value": "\n ```\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"image.png\"\n Content-Type: application/octet-stream\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n Bytes\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-2": { + "summary": "POST `/process-instance/aProcessInstanceId/variables/aVarName/data` (2)", + "description": "Post the JSON serialization of a Java Class (**deprecated**).", + "value": "\n ```\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"type\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n java.util.ArrayList\u003cjava.lang.Object\u003e\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"data\"\n Content-Type: application/json; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n [\"foo\",\"bar\"]\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-3": { + "summary": "POST `/process-instance/aProcessInstanceId/variables/aVarName/data` (3)", + "description": "Post a text file.", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"myFile.txt\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n File\n ------------------------------1e838f8f632a--\n ```\n " + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request\nThe variable value or type is invalid, for example if no filename is set." + } + } + } + }, + "/schema/log": { + "get": { + "operationId": "getSchemaLog", + "tags": [ + "Schema Log" + ], + "summary": "Get List", + "description": "Queries for schema log entries that fulfill given parameters.", + "parameters": [ + { + "name": "version", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only return schema log entries with a specific version." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SchemaLogEntryDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "The Response content of a status 200", + "value": [ + { + "id": "0", + "version": "7.11.0", + "timestamp": "2019-05-13T09:07:11.751+0200" + }, + { + "id": "1", + "version": "7.11.1", + "timestamp": "2019-06-1T17:22:05.123+0200" + } + ] + } + } + } + }, + "description": "Request successful.\n**Note**: In order to get any results a user of group `camunda-admin` must\nbe authenticated." + } + } + }, + "post": { + "operationId": "querySchemaLog", + "tags": [ + "Schema Log" + ], + "summary": "Get List (POST)", + "description": "Queries for schema log entries that fulfill given parameters.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SchemaLogQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST /schema/log", + "description": "The content of the Request Body", + "value": { + "version": "7.11.0", + "sortBy": "timestamp", + "sortOrder": "asc" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SchemaLogEntryDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "The Response content of a status 200", + "value": [ + { + "id": "0", + "version": "7.11.0", + "timestamp": "2019-05-13T09:07:11.751+0200" + } + ] + } + } + } + }, + "description": "Request successful.\n**Note**: In order to get any results a user of group camunda-admin must be\nauthenticated." + } + } + } + }, + "/signal": { + "post": { + "operationId": "throwSignal", + "tags": [ + "Signal" + ], + "summary": "Event", + "description": "A signal is an event of global scope (broadcast semantics) and is delivered to all\nactive handlers. Internally this maps to the engine\u0027s signal event received builder\nmethod `RuntimeService#createSignalEvent()`. For more information about the signal\nbehavior, see the [Signal Events](https://docs.camunda.org/manual/7.15/reference/bpmn20/events/signal-events/)\nsection of the [BPMN 2.0 Implementation Reference](https://docs.camunda.org/manual/7.15/reference/bpmn20/).", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignalDto" + }, + "examples": { + "examle-1": { + "summary": "POST /signal", + "description": "The content of the Request Body", + "value": { + "name": "policy_conditions_changed", + "variables": { + "newTimePeriodInMonth": { + "value": 24 + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if:\n\n* no name was given\n* the variable value or type is invalid, for example if the value could not be\nparsed to an integer value or the passed variable type is not supported\n* a tenant id and an execution id is specified.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the\nerror response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "Returned if the user is not allowed to throw a signal event.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the\nerror response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if a single execution is specified and no such execution exists or has not\nsubscribed to the signal.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the\nerror response format." + } + } + } + }, + "/task": { + "get": { + "operationId": "getTasks", + "tags": [ + "Task" + ], + "summary": "Get List", + "description": "Queries for tasks that fulfill a given filter. The size of the result set can be\nretrieved by using the Get Task Count method.\n\n**Security Consideration:** There are several query parameters (such as\nassigneeExpression) for specifying an EL expression. These are disabled by default to\nprevent remote code execution. See the section on\n[security considerations](https://docs.camunda.org/manual/7.15/user-guide/process-engine/securing-custom-code/)\nfor custom code in the user guide for details.", + "parameters": [ + { + "name": "taskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to task with the given id." + }, + { + "name": "taskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks with any of the given ids." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given id." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given ids." + }, + { + "name": "processInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given business key." + }, + { + "name": "processInstanceBusinessKeyExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given business key which \nis described by an expression. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + { + "name": "processInstanceBusinessKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with one of the give business keys. \nThe keys need to be in a comma-separated list." + }, + { + "name": "processInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring." + }, + { + "name": "processInstanceBusinessKeyLikeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring and is described by an expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given id." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given key." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with one of the given keys. The \nkeys need to be in a comma-separated list." + }, + { + "name": "processDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given name." + }, + { + "name": "processDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process definition name that has the parameter value as \na substring." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to an execution with the given id." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to case instances with the given id." + }, + { + "name": "caseInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to case instances with the given business key." + }, + { + "name": "caseInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a case instance business key that has the parameter value \nas a substring." + }, + { + "name": "caseDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given id." + }, + { + "name": "caseDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given key." + }, + { + "name": "caseDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given name." + }, + { + "name": "caseDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a case definition name that has the parameter value as a \nsubstring." + }, + { + "name": "caseExecutionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case execution with the given id." + }, + { + "name": "activityInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated activity \ninstance ids." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated \ntenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which belong to no tenant. Value may only be `true`, \nas `false` is the default behavior." + }, + { + "name": "assignee", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the given user is assigned to." + }, + { + "name": "assigneeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the user described by the given expression is assigned to. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "assigneeLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have an assignee that has the parameter \nvalue as a substring." + }, + { + "name": "assigneeLikeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have an assignee that has the parameter value described by the \ngiven expression as a substring. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "assigneeIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which are assigned to one of the passed and \ncomma-separated user ids." + }, + { + "name": "owner", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the given user owns." + }, + { + "name": "ownerExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the user described by the given expression owns. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "candidateGroup", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the given group." + }, + { + "name": "candidateGroupExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the group described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "candidateUser", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the given user or to one of his groups." + }, + { + "name": "candidateUserExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the user described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "includeAssignedTasks", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Also include tasks that are assigned to users in candidate queries. Default is to only \ninclude tasks that are not assigned to any user if you query by candidate user or\ngroup(s)." + }, + { + "name": "involvedUser", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that the given user is involved in. A user is involved in a task if \nan identity link exists between task and user (e.g., the user is the assignee)." + }, + { + "name": "involvedUserExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that the user described by the given expression is involved in.\nA user is involved in a task if an identity link exists between task and user\n(e.g., the user is the assignee). See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + { + "name": "assigned", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to `true`, restricts the query to all tasks that are assigned." + }, + { + "name": "unassigned", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to `true`, restricts the query to all tasks that are unassigned." + }, + { + "name": "taskDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given key." + }, + { + "name": "taskDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have one of the given keys. The keys need to be in a\ncomma-separated list." + }, + { + "name": "taskDefinitionKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a key that has the parameter value as a substring." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given name." + }, + { + "name": "nameNotEqual", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that do not have the given name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a name with the given parameter value as substring." + }, + { + "name": "nameNotLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that do not have a name with the given parameter\nvalue as substring." + }, + { + "name": "description", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given description." + }, + { + "name": "descriptionLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a description that has the parameter\nvalue as a substring." + }, + { + "name": "priority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have the given priority." + }, + { + "name": "maxPriority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have a lower or equal priority." + }, + { + "name": "minPriority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have a higher or equal priority." + }, + { + "name": "dueDate", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "dueDateExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due on the date described by the given expression. See the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "dueAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.435+0200`." + }, + { + "name": "dueAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "dueBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.243+0200`." + }, + { + "name": "dueBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "withoutDueDate", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no due date. Value may only be `true`, \nas `false` is the default behavior." + }, + { + "name": "followUpDate", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.342+0200`." + }, + { + "name": "followUpDateExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date on the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the\ndate must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.542+0200`." + }, + { + "name": "followUpAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date after the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the\ndate must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.234+0200`." + }, + { + "name": "followUpBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date before the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpBeforeOrNotExistent", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have no followUp date or a followUp date before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.432+0200`. The\ntypical use case is to query all `active` tasks for a user for a given date." + }, + { + "name": "followUpBeforeOrNotExistentExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have no followUp date or a followUp date before the date\ndescribed by the given expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdOn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.324+0200`." + }, + { + "name": "createdOnExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created on the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`." + }, + { + "name": "createdAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.332+0200`." + }, + { + "name": "createdBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "delegationState", + "in": "query", + "schema": { + "enum": [ + "PENDING", + "RESOLVED" + ], + "type": "string" + }, + "description": "Restrict to tasks that are in the given delegation state. Valid values are\n`PENDING` and `RESOLVED`." + }, + { + "name": "candidateGroups", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are offered to any of the given candidate groups. Takes a\ncomma-separated list of group names, so for example `developers,support,sales`." + }, + { + "name": "candidateGroupsExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are offered to any of the candidate groups described by the\ngiven expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to\n`java.util.List` of Strings." + }, + { + "name": "withCandidateGroups", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have a candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withoutCandidateGroups", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withCandidateUsers", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have a candidate user. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withoutCandidateUsers", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no candidate users. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "active", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include active tasks. Value may only be `true`, as `false`\nis the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include suspended tasks. Value may only be `true`, as\n`false` is the default behavior." + }, + { + "name": "taskVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that have variables with certain values. Variable filtering\nexpressions are comma-separated and are structured as follows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "processVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that belong to process instances that have variables with certain \nvalues. Variable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`;\n`notLike`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "caseInstanceVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that belong to case instances that have variables with certain\nvalues. Variable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable names in this query case-insensitively. If set\n`variableName` and `variablename` are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable values in this query case-insensitively. If set\n`variableValue` and `variablevalue` are treated as equal." + }, + { + "name": "parentTaskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all tasks that are sub tasks of the given task. Takes a task id." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "instanceId", + "caseInstanceId", + "dueDate", + "executionId", + "caseExecutionId", + "assignee", + "created", + "description", + "id", + "name", + "nameCaseInsensitive", + "priority", + "processVariable", + "executionVariable", + "taskVariable", + "caseExecutionVariable", + "caseInstanceVariable" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "description": "Response for GET `/task?assignee\u003danAssignee\u0026delegationState\u003dRESOLVED\u0026maxPriority\u003d50`", + "value": [ + { + "id": "anId", + "name": "aName", + "assignee": "anAssignee", + "created": "2013-01-23T13:42:42.657+0200", + "due": "2013-01-23T13:49:42.323+0200", + "followUp:": "2013-01-23T13:44:42.987+0200", + "delegationState": "RESOLVED", + "description": "aDescription", + "executionId": "anExecution", + "owner": "anOwner", + "parentTaskId": "aParentId", + "priority": 42, + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "caseDefinitionId": "aCaseDefId", + "caseInstanceId": "aCaseInstId", + "caseExecutionId": "aCaseExecution", + "taskDefinitionKey": "aTaskDefinitionKey", + "suspended": false, + "formKey": "aFormKey", + "tenantId": "aTenantId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator for variable\ncomparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryTasks", + "tags": [ + "Task" + ], + "summary": "Get List (POST)", + "description": "Queries for tasks that fulfill a given filter. This method is slightly more powerful\nthan the [Get Tasks](https://docs.camunda.org/manual/7.15/reference/rest/task/get-query/) method because it\nallows filtering by multiple process or task variables of types `String`, `Number`\nor `Boolean`. The size of the result set can be retrieved by using the\n[Get Task Count (POST)](https://docs.camunda.org/manual/7.15/reference/rest/task/post-query-count/) method.\n\n**Security Consideration**:\nThere are several parameters (such as `assigneeExpression`) for specifying an EL\nexpression. These are disabled by default to prevent remote code execution. See the\nsection on\n[security considerations for custom code](https://docs.camunda.org/manual/7.15/user-guide/process-engine/securing-custom-code/)\nin the user guide for details.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task` Request Body 1", + "value": { + "taskVariables": [ + { + "name": "varName", + "value": "varValue", + "operator": "eq" + }, + { + "name": "anotherVarName", + "value": 30, + "operator": "neq" + } + ], + "processInstanceBusinessKeyIn": "aBusinessKey,anotherBusinessKey", + "assigneeIn": "anAssignee,anotherAssignee", + "priority": 10, + "sorting": [ + { + "sortBy": "dueDate", + "sortOrder": "asc" + }, + { + "sortBy": "processVariable", + "sortOrder": "desc", + "parameters": { + "variable": "orderId", + "type": "String" + } + } + ] + } + }, + "example-2": { + "summary": "POST `/task` Request Body 2", + "description": "Logical query: assignee \u003d \"John Munda\" AND (name \u003d \"Approve Invoice\" OR priority \u003d 5) AND (suspended \u003d false OR taskDefinitionKey \u003d \"approveInvoice\")", + "value": { + "assignee": "John Munda", + "orQueries": [ + { + "name": "Approve Invoice", + "priority": 5 + }, + { + "suspended": false, + "taskDefinitionKey": "approveInvoice" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 response 1", + "value": [ + { + "id": "anId", + "name": "aName", + "assignee": "anAssignee", + "created": "2013-01-23T13:42:42.453+0200", + "due": "2013-01-23T13:49:42.342+0200", + "followUp:": "2013-01-23T13:44:42.546+0200", + "delegationState": "RESOLVED", + "description": "aDescription", + "executionId": "anExecution", + "owner": "anOwner", + "parentTaskId": "aParentId", + "priority": 10, + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "caseDefinitionId": "aCaseDefId", + "caseInstanceId": "aCaseInstId", + "caseExecutionId": "aCaseExecution", + "taskDefinitionKey": "aTaskDefinitionKey", + "suspended": false, + "formKey": "aFormKey", + "tenantId": "aTenantId" + } + ] + }, + "example-2": { + "summary": "Status 200 response 2", + "value": [ + { + "id": "349fffa8-6571-11e7-9a44-d6940f5ef88d", + "name": "Approve Invoice", + "assignee": "John Munda", + "created": "2017-07-10T15:10:54.670+0200", + "due": "2017-07-17T15:10:54.670+0200", + "followUp": null, + "delegationState": null, + "description": "Approve the invoice (or not).", + "executionId": "349f8a5c-6571-11e7-9a44-d6940f5ef88d", + "owner": null, + "parentTaskId": null, + "priority": 50, + "processDefinitionId": "invoice:1:2c8d8057-6571-11e7-9a44-d6940f5ef88d", + "processInstanceId": "349f8a5c-6571-11e7-9a44-d6940f5ef88d", + "taskDefinitionKey": "approveInvoice", + "caseExecutionId": null, + "caseInstanceId": null, + "caseDefinitionId": null, + "suspended": false, + "formKey": "embedded:app:develop/invoice-forms/approve-invoice.html", + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator for variable\ncomparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/count": { + "get": { + "operationId": "getTasksCount", + "tags": [ + "Task" + ], + "summary": "Get List Count", + "description": "Retrieves the number of tasks that fulfill a provided filter. Corresponds to the size\nof the result set when using the [Get Tasks](https://docs.camunda.org/manual/7.15/reference/rest/task/) method.\n\n**Security Consideration:** There are several query parameters (such as\nassigneeExpression) for specifying an EL expression. These are disabled by default to\nprevent remote code execution. See the section on\n[security considerations](https://docs.camunda.org/manual/7.15/user-guide/process-engine/securing-custom-code/)\nfor custom code in the user guide for details.", + "parameters": [ + { + "name": "taskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to task with the given id." + }, + { + "name": "taskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks with any of the given ids." + }, + { + "name": "processInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given id." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given ids." + }, + { + "name": "processInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given business key." + }, + { + "name": "processInstanceBusinessKeyExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given business key which \nis described by an expression. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + { + "name": "processInstanceBusinessKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with one of the give business keys. \nThe keys need to be in a comma-separated list." + }, + { + "name": "processInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring." + }, + { + "name": "processInstanceBusinessKeyLikeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring and is described by an expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "processDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given id." + }, + { + "name": "processDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given key." + }, + { + "name": "processDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with one of the given keys. The \nkeys need to be in a comma-separated list." + }, + { + "name": "processDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with the given name." + }, + { + "name": "processDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a process definition name that has the parameter value as \na substring." + }, + { + "name": "executionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to an execution with the given id." + }, + { + "name": "caseInstanceId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to case instances with the given id." + }, + { + "name": "caseInstanceBusinessKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to case instances with the given business key." + }, + { + "name": "caseInstanceBusinessKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a case instance business key that has the parameter value \nas a substring." + }, + { + "name": "caseDefinitionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given id." + }, + { + "name": "caseDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given key." + }, + { + "name": "caseDefinitionName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case definition with the given name." + }, + { + "name": "caseDefinitionNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a case definition name that has the parameter value as a \nsubstring." + }, + { + "name": "caseExecutionId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a case execution with the given id." + }, + { + "name": "activityInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated activity \ninstance ids." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated \ntenant ids." + }, + { + "name": "withoutTenantId", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which belong to no tenant. Value may only be `true`, \nas `false` is the default behavior." + }, + { + "name": "assignee", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the given user is assigned to." + }, + { + "name": "assigneeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the user described by the given expression is assigned to. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "assigneeLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have an assignee that has the parameter \nvalue as a substring." + }, + { + "name": "assigneeLikeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have an assignee that has the parameter value described by the \ngiven expression as a substring. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "assigneeIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks which are assigned to one of the passed and \ncomma-separated user ids." + }, + { + "name": "owner", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the given user owns." + }, + { + "name": "ownerExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that the user described by the given expression owns. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "candidateGroup", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the given group." + }, + { + "name": "candidateGroupExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the group described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "candidateUser", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the given user or to one of his groups." + }, + { + "name": "candidateUserExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that are offered to the user described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + { + "name": "includeAssignedTasks", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Also include tasks that are assigned to users in candidate queries. Default is to only \ninclude tasks that are not assigned to any user if you query by candidate user or\ngroup(s)." + }, + { + "name": "involvedUser", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that the given user is involved in. A user is involved in a task if \nan identity link exists between task and user (e.g., the user is the assignee)." + }, + { + "name": "involvedUserExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that the user described by the given expression is involved in.\nA user is involved in a task if an identity link exists between task and user\n(e.g., the user is the assignee). See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + { + "name": "assigned", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to `true`, restricts the query to all tasks that are assigned." + }, + { + "name": "unassigned", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "If set to `true`, restricts the query to all tasks that are unassigned." + }, + { + "name": "taskDefinitionKey", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given key." + }, + { + "name": "taskDefinitionKeyIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have one of the given keys. The keys need to be in a\ncomma-separated list." + }, + { + "name": "taskDefinitionKeyLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a key that has the parameter value as a substring." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given name." + }, + { + "name": "nameNotEqual", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that do not have the given name." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a name with the given parameter value as substring." + }, + { + "name": "nameNotLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that do not have a name with the given parameter\nvalue as substring." + }, + { + "name": "description", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have the given description." + }, + { + "name": "descriptionLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a description that has the parameter\nvalue as a substring." + }, + { + "name": "priority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have the given priority." + }, + { + "name": "maxPriority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have a lower or equal priority." + }, + { + "name": "minPriority", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Restrict to tasks that have a higher or equal priority." + }, + { + "name": "dueDate", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.546+0200`." + }, + { + "name": "dueDateExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due on the date described by the given expression. See the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "dueAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.435+0200`." + }, + { + "name": "dueAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "dueBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.243+0200`." + }, + { + "name": "dueBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are due before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "withoutDueDate", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no due date. Value may only be `true`, \nas `false` is the default behavior." + }, + { + "name": "followUpDate", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.342+0200`." + }, + { + "name": "followUpDateExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date on the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the\ndate must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.542+0200`." + }, + { + "name": "followUpAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date after the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the\ndate must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g.,\n`2013-01-23T14:42:45.234+0200`." + }, + { + "name": "followUpBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have a followUp date before the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "followUpBeforeOrNotExistent", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have no followUp date or a followUp date before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.432+0200`. The\ntypical use case is to query all `active` tasks for a user for a given date." + }, + { + "name": "followUpBeforeOrNotExistentExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that have no followUp date or a followUp date before the date\ndescribed by the given expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdOn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.324+0200`." + }, + { + "name": "createdOnExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created on the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdAfter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`." + }, + { + "name": "createdAfterExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "createdBefore", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the\nformat `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.332+0200`." + }, + { + "name": "createdBeforeExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that were created before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + { + "name": "delegationState", + "in": "query", + "schema": { + "enum": [ + "PENDING", + "RESOLVED" + ], + "type": "string" + }, + "description": "Restrict to tasks that are in the given delegation state. Valid values are\n`PENDING` and `RESOLVED`." + }, + { + "name": "candidateGroups", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are offered to any of the given candidate groups. Takes a\ncomma-separated list of group names, so for example `developers,support,sales`." + }, + { + "name": "candidateGroupsExpression", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict to tasks that are offered to any of the candidate groups described by the\ngiven expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to\n`java.util.List` of Strings." + }, + { + "name": "withCandidateGroups", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have a candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withoutCandidateGroups", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withCandidateUsers", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have a candidate user. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "withoutCandidateUsers", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include tasks which have no candidate users. Value may only be `true`,\nas `false` is the default behavior." + }, + { + "name": "active", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include active tasks. Value may only be `true`, as `false`\nis the default behavior." + }, + { + "name": "suspended", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Only include suspended tasks. Value may only be `true`, as\n`false` is the default behavior." + }, + { + "name": "taskVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that have variables with certain values. Variable filtering\nexpressions are comma-separated and are structured as follows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "processVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that belong to process instances that have variables with certain \nvalues. Variable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`;\n`notLike`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "caseInstanceVariables", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include tasks that belong to case instances that have variables with certain\nvalues. Variable filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`. `key` is the variable name,\n`operator` is the comparison operator to be used and `value` the variable value.\n\n**Note**: Values are always treated as String objects on server side.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable names in this query case-insensitively. If set\n`variableName` and `variablename` are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "default": false, + "type": "boolean" + }, + "description": "Match all variable values in this query case-insensitively. If set\n`variableValue` and `variablevalue` are treated as equal." + }, + { + "name": "parentTaskId", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Restrict query to all tasks that are sub tasks of the given task. Takes a task id." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryTasksCount", + "tags": [ + "Task" + ], + "summary": "Get List Count (POST)", + "description": "Retrieves the number of tasks that fulfill the given filter. Corresponds to the size\nof the result set of the [Get Tasks (POST)](https://docs.camunda.org/manual/7.15/reference/rest/task/post-query/)\nmethod and takes the same parameters.\n\n**Security Consideration**:\nThere are several parameters (such as `assigneeExpression`) for specifying an EL\nexpression. These are disabled by default to prevent remote code execution. See the\nsection on\n[security considerations for custom code](https://docs.camunda.org/manual/7.15/user-guide/process-engine/securing-custom-code/)\nin the user guide for details.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task` Request Body 1", + "value": { + "taskVariables": [ + { + "name": "varName", + "value": "varValue", + "operator": "eq" + }, + { + "name": "anotherVarName", + "value": 30, + "operator": "neq" + } + ], + "processInstanceBusinessKeyIn": "aBusinessKey,anotherBusinessKey", + "assigneeIn": "anAssignee,anotherAssignee", + "priority": 10, + "sorting": [ + { + "sortBy": "dueDate", + "sortOrder": "asc" + }, + { + "sortBy": "processVariable", + "sortOrder": "desc", + "parameters": { + "variable": "orderId", + "type": "String" + } + } + ] + } + }, + "example-2": { + "summary": "POST `/task` Request Body 2", + "description": "Logical query: assignee \u003d \"John Munda\" AND (name \u003d \"Approve Invoice\" OR priority \u003d 5) AND (suspended \u003d false OR taskDefinitionKey \u003d \"approveInvoice\")", + "value": { + "assignee": "John Munda", + "orQueries": [ + { + "name": "Approve Invoice", + "priority": 5 + }, + { + "suspended": false, + "taskDefinitionKey": "approveInvoice" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 response", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/create": { + "post": { + "operationId": "createTask", + "tags": [ + "Task" + ], + "summary": "Create", + "description": "Creates a new task.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskDto" + }, + "examples": { + "example-1": { + "summary": "POST /task/create", + "value": { + "id": "aTaskId", + "name": "My Task", + "description": "This have to be done very urgent", + "priority": 30, + "assignee": "peter", + "owner": "mary", + "delegationState": "PENDING", + "due": "2014-08-30T10:00:00.000+0200", + "followUp": "2014-08-25T10:00:00.000+0200", + "parentTaskId": "aParentTaskId", + "caseInstanceId": "aCaseInstanceId", + "tenantId": null + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if a not valid `delegationState` is supplied. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}": { + "delete": { + "operationId": "deleteTask", + "tags": [ + "Task" + ], + "summary": "Delete", + "description": "Removes a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to be removed." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Bad Request. The Task with the given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The Task with the given id cannot be deleted because it is part of a running process or case instance.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for\nthe error response format." + } + } + }, + "get": { + "operationId": "getTask", + "tags": [ + "Task" + ], + "summary": "Get", + "description": "Retrieves a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskDto" + }, + "examples": { + "example-1": { + "summary": "GET /task/anId Response", + "value": { + "id": "anId", + "name": "aName", + "assignee": "anAssignee", + "created": "2013-01-23T13:42:42.000+0200", + "due": "2013-01-23T13:49:42.576+0200", + "followUp": "2013-01-23T13:44:42.437+0200", + "delegationState": "RESOLVED", + "description": "aDescription", + "executionId": "anExecution", + "owner": "anOwner", + "parentTaskId": "aParentId", + "priority": 42, + "processDefinitionId": "aProcDefId", + "processInstanceId": "aProcInstId", + "caseDefinitionId": "aCaseDefId", + "caseInstanceId": "aCaseInstId", + "caseExecutionId": "aCaseExecution", + "taskDefinitionKey": "aTaskDefinitionKey", + "suspended": false, + "formKey": "aFormKey", + "tenantId": "aTenantId" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "updateTask", + "tags": [ + "Task" + ], + "summary": "Update", + "description": "Updates a task.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to be updated." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskDto" + }, + "examples": { + "example-1": { + "summary": "PUT /task/aTaskId/ Response", + "value": { + "name": "My Task", + "description": "This have to be done very urgent", + "priority": 30, + "assignee": "peter", + "owner": "mary", + "delegationState": "PENDING", + "due": "2014-08-30T10:00:00.000+0200", + "followUp": "2014-08-25T10:00:00.000+0200", + "parentTaskId": "aParentTaskId", + "caseInstanceId": "aCaseInstanceId", + "tenantId": "tenantId" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if a not valid `delegationState` is supplied. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the corresponding task cannot be found." + } + } + } + }, + "/task/{id}/assignee": { + "post": { + "operationId": "setAssignee", + "tags": [ + "Task" + ], + "summary": "Set Assignee", + "description": "Changes the assignee of a task to a specific user.\n\n**Note:** The difference with the [Claim Task](https://docs.camunda.org/manual/7.15/reference/rest/task/post-claim/)\nmethod is that this method does not check if the task already has a user\nassigned to it.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to set the assignee for." + } + ], + "requestBody": { + "description": "Provide the id of the user that will be the assignee of the task.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserIdDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/anId/assignee`", + "value": { + "userId": "aUserId" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist or setting the assignee was not successful.\nSee the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/attachment": { + "get": { + "operationId": "getAttachments", + "tags": [ + "Task Attachment" + ], + "summary": "Get List", + "description": "Gets the attachments for a task.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the attachments for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttachmentDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/attachment", + "value": [ + { + "id": "attachmentId", + "name": "attachmentName", + "taskId": "aTaskId", + "description": "attachmentDescription", + "type": "attachmentType", + "url": "http://my-attachment-content-url.de", + "createTime": "2017-02-10T14:33:19.000+0200", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + }, + { + "id": "anotherAttachmentId", + "name": "anotherAttachmentName", + "taskId": "aTaskId", + "description": "anotherAttachmentDescription", + "type": "anotherAttachmentType", + "url": "http://my-another-attachment-content-url.de", + "createTime": "2017-02-10T14:33:19.000+0200", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + }, + { + "id": "yetAnotherAttachmentId", + "name": "yetAnotherAttachmentName", + "taskId": "aTaskId", + "description": "yetAnotherAttachmentDescription", + "type": "yetAnotherAttachmentType", + "url": "http://yet-another-attachment-content-url.de", + "createTime": "2017-02-10T14:33:19.000+0200", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No task exists for the given task id. See the [Introduction](/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/attachment/create": { + "post": { + "operationId": "addAttachment", + "tags": [ + "Task Attachment" + ], + "summary": "Create", + "description": "Creates an attachment for a task.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to add the attachment to." + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormAttachmentDto" + }, + "examples": { + "example-1": { + "summary": "POST /task/aTaskId/attachment/create", + "description": "Post data for a new task attachment.", + "value": "------------------------------925df49a954b\n Content-Disposition: form-data; name\u003d\"url\"\n\n http://my-attachment-content-url.de\n ------------------------------925df49a954b\n Content-Disposition: form-data; name\u003d\"attachment-name\"\n\n attachmentName\n ------------------------------925df49a954b\n Content-Disposition: form-data; name\u003d\"attachment-description\"\n\n attachmentDescription\n ------------------------------925df49a954b\n Content-Disposition: form-data; name\u003d\"attachment-type\"\n\n attachmentType\n ------------------------------925df49a954b--" + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "id": "attachmentId", + "name": "attachmentName", + "taskId": "aTaskId", + "description": "attachmentDescription", + "type": "attachmentType", + "url": "http://my-attachment-content-url.de", + "createTime": "2017-02-10T14:33:19.000+0200", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId", + "links": [ + { + "method": "GET", + "href": "http://localhost:38080/rest-test/task/aTaskId/attachment/aTaskAttachmentId", + "rel": "self" + } + ] + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The task does not exists or task id is null. No content or url to remote content exists. See the\n[Introduction](/reference/rest/overview/#error-handling) for the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The history of the engine is disabled. See the [Introduction](/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/attachment/{attachmentId}": { + "delete": { + "operationId": "deleteAttachment", + "tags": [ + "Task Attachment" + ], + "summary": "Delete", + "description": "Removes an attachment from a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task." + }, + { + "name": "attachmentId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the attachment to be removed." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The history of the engine is disabled. See the [Introduction](/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "A Task Attachment for the given task id and attachment id does not exist. See the\n[Introduction](/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getAttachment", + "tags": [ + "Task Attachment" + ], + "summary": "Get", + "description": "Retrieves a task attachment by task id and attachment id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task." + }, + { + "name": "attachmentId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the attachment to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentDto" + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/attachment/aTaskAttachmentId", + "value": { + "id": "attachmentId", + "name": "attachmentName", + "taskId": "aTaskId", + "description": "attachmentDescription", + "type": "attachmentType", + "url": "http://my-attachment-content-url.de", + "createTime": "2017-02-10T14:33:19.000+0200", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId", + "links": [ + { + "method": "GET", + "href": "http://localhost:38080/rest-test/task/aTaskId/attachment/aTaskAttachmentId", + "rel": "self" + } + ] + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The attachment for the given task and attachment id does not exist or the history of the engine is\ndisabled.\n\nSee the [Introduction](/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/task/{id}/attachment/{attachmentId}/data": { + "get": { + "operationId": "getAttachmentData", + "tags": [ + "Task Attachment" + ], + "summary": "Get (Binary)", + "description": "Retrieves the binary content of a task attachment by task id and attachment id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task." + }, + { + "name": "attachmentId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the attachment to be retrieved." + } + ], + "responses": { + "200": { + "description": "Request successful.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For files without any MIME type information, a byte stream is returned." + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information are returned as the saved type. Additionally, for file\n responses, the Content-Disposition header will be set." + } + } + } + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The attachment content for the given task id and attachment id does not exist, or the history of the\nengine is disabled.\n\nSee the [Introduction](/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/task/{id}/bpmnError": { + "post": { + "operationId": "handleBpmnError", + "tags": [ + "Task" + ], + "summary": "Handle BPMN Error", + "description": "Reports a business error in the context of a running task by id. The error code must\nbe specified to identify the BPMN error handler. See the documentation for\n[Reporting Bpmn Error](https://docs.camunda.org/manual/7.15/reference/bpmn20/tasks/user-task/#reporting-bpmn-error)\nin User Tasks.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task a BPMN error is reported for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskBpmnErrorDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/aTaskId/bpmnError`", + "value": { + "errorCode": "bpmn-error-543", + "errorMessage": "anErrorMessage", + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the `errorCode` or `id` are not present in the request. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "If the authenticated user is unauthorized to update the task. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/bpmnEscalation": { + "post": { + "operationId": "handleEscalation", + "tags": [ + "Task" + ], + "summary": "Handle BPMN Escalation", + "description": "Reports an escalation in the context of a running task by id. The escalation code must\nbe specified to identify the escalation handler. See the documentation for\n[Reporting Bpmn Escalation](https://docs.camunda.org/manual/7.15/reference/bpmn20/tasks/user-task/#reporting-bpmn-escalation)\nin User Tasks.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task in which context a BPMN escalation is reported." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskEscalationDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/aTaskId/bpmnEscalation`", + "value": { + "escalationCode": "bpmn-escalation-432", + "variables": { + "aVariable": { + "value": "aStringValue", + "type": "String" + }, + "anotherVariable": { + "value": true, + "type": "Boolean" + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the \u003ccode\u003eescalationCode\u003c/code\u003e is not provided in\nthe request. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "If the authenticated user is unauthorized to update the process instance. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if the task does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/claim": { + "post": { + "operationId": "claim", + "tags": [ + "Task" + ], + "summary": "Claim", + "description": "Claims a task for a specific user.\n\n**Note:** The difference with the\n[Set Assignee](https://docs.camunda.org/manual/7.15/reference/rest/task/post-assignee/)\nmethod is that here a check is performed to see if the task already has a user\nassigned to it.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to claim." + } + ], + "requestBody": { + "description": "Provide the id of the user that claims the task.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserIdDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/anId/claim`", + "value": { + "userId": "aUserId" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist or claiming was not successful. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/comment": { + "get": { + "operationId": "getComments", + "tags": [ + "Task Comment" + ], + "summary": "Get List", + "description": "Gets the comments for a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the comments for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommentDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/comment", + "value": [ + { + "id": "commentId", + "userId": "userId", + "taskId": "aTaskId", + "time": "2013-01-02T21:37:03.764+0200", + "message": "message", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + }, + { + "id": "anotherCommentId", + "userId": "anotherUserId", + "taskId": "aTaskId", + "time": "2013-02-23T20:37:43.975+0200", + "message": "anotherMessage", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + }, + { + "id": "yetAnotherCommentId", + "userId": "yetAnotherUserId", + "taskId": "aTaskId", + "time": "2013-04-21T10:15:23.764+0200", + "message": "yetAnotherMessage", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No task exists for the given task id. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/comment/create": { + "post": { + "operationId": "createComment", + "tags": [ + "Task Comment" + ], + "summary": "Create", + "description": "Creates a comment for a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to add the comment to." + } + ], + "requestBody": { + "description": "**Note:** Only the `message` property will be used. Every other property passed to this endpoint will be ignored.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommentDto" + }, + "examples": { + "example-1": { + "summary": "POST /task/aTaskId/comment/create", + "value": { + "message": "a task comment" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommentDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:38080/rest-test/task/aTaskId/comment/aTaskCommentId", + "rel": "self" + } + ], + "id": "aTaskCommentId", + "userId": "userId", + "taskId": "aTaskId", + "time": "2013-01-02T21:37:03.887+0200", + "message": "comment message", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The task does not exist or no comment message was submitted. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The history of the engine is disabled. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/comment/{commentId}": { + "get": { + "operationId": "getComment", + "tags": [ + "Task Comment" + ], + "summary": "Get", + "description": "Retrieves a task comment by task id and comment id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task." + }, + { + "name": "commentId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the comment to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommentDto" + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/comment", + "value": { + "id": "aTaskCommentId", + "userId": "userId", + "taskId": "aTaskId", + "time": "2013-01-02T21:37:03.664+0200", + "message": "comment content", + "removalTime": "2018-02-10T14:33:19.000+0200", + "rootProcessInstanceId": "aRootProcessInstanceId" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The task or comment with given task and comment id does not exist, or the history of\nthe engine is disabled. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/complete": { + "post": { + "operationId": "complete", + "tags": [ + "Task" + ], + "summary": "Complete", + "description": "Completes a task and updates process variables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to complete." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteTaskDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/anId/complete`", + "description": "Complete Task with variables in return", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + }, + "withVariablesInReturn": true + } + }, + "example-2": { + "summary": "POST `/task/anId/complete`", + "description": "Complete Task without variables in return", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "POST `/task/anId/complete`", + "description": "Response Body", + "value": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + } + } + } + } + }, + "description": "Request successful. The response contains the process variables." + }, + "204": { + "description": "Request successful. The response contains no variables." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the task does not exist or the corresponding process instance could not be\nresumed successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/delegate": { + "post": { + "operationId": "delegateTask", + "tags": [ + "Task" + ], + "summary": "Delegate", + "description": "Delegates a task to another user.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to delegate." + } + ], + "requestBody": { + "description": "Provide the id of the user that the task should be delegated to.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserIdDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/anId/delegate`", + "value": { + "userId": "aUserId" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the task does not exist or delegation was not successful. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/deployed-form": { + "get": { + "operationId": "getDeployedForm", + "tags": [ + "Task" + ], + "summary": "Get Deployed Form", + "description": "Retrieves the deployed form that is referenced from a given task. For further\ninformation please refer to the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#embedded-task-forms).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to get the deployed form for." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "Resonse for GET `/task/taskId/deployed-form`", + "value": "\u003cform role\u003d\"form\" name\u003d\"invoiceForm\"\n class\u003d\"form-horizontal\"\u003e\n \u003cdiv class\u003d\"form-group\"\u003e\n \u003clabel class\u003d\"control-label col-md-4\"\n for\u003d\"creditor\"\u003eCreditor\u003c/label\u003e\n \u003cdiv class\u003d\"col-md-8\"\u003e\n \u003cinput cam-variable-name\u003d\"creditor\"\n cam-variable-type\u003d\"String\"\n id\u003d\"creditor\"\n class\u003d\"form-control\"\n type\u003d\"text\"\n required /\u003e\n \u003cdiv class\u003d\"help\"\u003e\n (e.g. \u0026quot;Great Pizza for Everyone Inc.\u0026quot;)\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e" + } + } + }, + "application/json": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/json` Responses, a byte stream is returned." + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The form key has wrong format. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizationExceptionDto" + } + } + }, + "description": "The deployed form cannot be retrieved due to missing permissions on task resource.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "No deployed form for a given task exists. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/form": { + "get": { + "operationId": "getForm", + "tags": [ + "Task" + ], + "summary": "Get Form Key", + "description": "Retrieves the form key for a task. The form key corresponds to the `FormData#formKey`\nproperty in the engine. This key can be used to do task-specific form rendering in\nclient applications. Additionally, the context path of the containing process\napplication is returned.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the form for." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `/task/anId/form`", + "value": { + "key": "aFormKey", + "contextPath": "http://localhost:8080/my-process-application/" + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/form-variables": { + "get": { + "operationId": "getFormVariables", + "tags": [ + "Task" + ], + "summary": "Get Task Form Variables", + "description": "Retrieves the form variables for a task. The form variables take form data specified\non the task into account. If form fields are defined, the variable types and default\nvalues of the form fields are taken into account.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variables for." + }, + { + "name": "variableNames", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of variable names. Allows restricting the list of requested\nvariables to the variable names in the list. It is best practice to restrict the\nlist of variables to the variables actually required by the form in order to\nminimize fetching of data. If the query parameter is ommitted all variables are\nfetched. If the query parameter contains non-existent variable names, the variable\nnames are ignored." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store\ncustom Java objects) should be deserialized on server side (default true).\n\nIf set to true, a serializable variable will be deserialized on server side and\ntransformed to JSON using [Jackson\u0027s](http://jackson.codehaus.org/) POJO/bean\nproperty introspection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to false, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string\ncontaining XML.\n\nNote: While true is the default value for reasons of backward compatibility, we\nrecommend setting this parameter to false when developing web applications that are\nindependent of the Java process applications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "GET `/task/anId/form-variables`", + "value": { + "amount": { + "type": "integer", + "value": 5, + "valueInfo": {} + }, + "firstName": { + "type": "String", + "value": "Jonny", + "valueInfo": {} + } + } + } + } + } + }, + "description": "Request successful. A JSON object containing a property for each variable returned." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": " id is null or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/identity-links": { + "get": { + "operationId": "getIdentityLinks", + "tags": [ + "Task Identity Link" + ], + "summary": "Get List", + "description": "Gets the identity links for a task by id, which are the users and groups that are in\n*some* relation to it (including assignee and owner).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the identity links for." + }, + { + "name": "type", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the type of links to include." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IdentityLinkDto" + } + }, + "examples": { + "example-1": { + "summary": "GET /task/anId/identityLinks", + "value": [ + { + "userId": "userId", + "groupId": null, + "type": "assignee" + }, + { + "userId": null, + "groupId": "groupId1", + "type": "candidate" + }, + { + "userId": null, + "groupId": "groupId2", + "type": "candidate" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + }, + "post": { + "operationId": "addIdentityLink", + "tags": [ + "Task Identity Link" + ], + "summary": "Add", + "description": "Adds an identity link to a task by id. Can be used to link any user or group to a task\nand specify a relation.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to add a link to." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IdentityLinkDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/anId/identity-links`", + "value": { + "groupId": "aNewGroupId", + "type": "candidate" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for the error response format." + } + } + } + }, + "/task/{id}/identity-links/delete": { + "post": { + "operationId": "deleteIdentityLink", + "tags": [ + "Task Identity Link" + ], + "summary": "Delete", + "description": "Removes an identity link from a task by id", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to remove a link from." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IdentityLinkDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/anId/identityLinks/delete`", + "value": { + "groupId": "theOldGroupId", + "type": "candidate" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task with given id does not exist.\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for\nthe error response format." + } + } + } + }, + "/task/{id}/localVariables": { + "get": { + "operationId": "getTaskLocalVariables", + "tags": [ + "Task Local Variable" + ], + "summary": "Get Local Task Variables", + "description": "Retrieves all variables of a given task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variables from." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on the server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of backward compatibility, we recommend setting this\nparameter to `false` when developing web applications that are independent of the Java process\napplications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/task/aTaskId/variables`", + "value": { + "aVariableKey": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + }, + "example-2": { + "summary": "GET `/task/aTaskId/variables?deserializeValue\u003dfalse`", + "value": { + "aVariableKey": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "modifyTaskLocalVariables", + "tags": [ + "Task Local Variable" + ], + "summary": "Update/Delete Local Task Variables", + "description": "Updates or deletes the variables in the context of a task. Updates precede deletions. So, if a variable is\nupdated AND deleted, the deletion overrides the update.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to set variables for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchVariablesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/aTaskId/variables`", + "description": "Status 204 Response: No content.", + "value": { + "modifications": { + "aVariable": { + "value": "aValue", + "type": "String" + }, + "anotherVariable": { + "value": 42, + "type": "Integer" + } + }, + "deletions": [ + "aThirdVariable", + "FourthVariable" + ] + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid. For example the value could not be parsed to an `Integer` value\nor the passed variable type is not supported. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Update or delete could not be executed because the task is `null` or does not exist.. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/localVariables/{varName}": { + "delete": { + "operationId": "deleteTaskLocalVariable", + "tags": [ + "Task Local Variable" + ], + "summary": "Delete Local Task Variable", + "description": "Removes a local variable from a task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to delete the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to be removed." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getTaskLocalVariable", + "tags": [ + "Task Local Variable" + ], + "summary": "Get Local Task Variable", + "description": "Retrieves a variable from the context of a given task by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to get" + }, + { + "name": "deserializeValue", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on the server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\nNote: While `true` is the default value for reasons of backward compatibility, we recommend setting this\nparameter to `false` when developing web applications that are independent of the Java process\napplications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "GET `/task/aTaskId/variables/myObject123`", + "value": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + }, + "example-2": { + "summary": "GET `/task/aTaskId/variables/myObject123?deserializeValue\u003dfalse`", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "putTaskLocalVariable", + "tags": [ + "Task Local Variable" + ], + "summary": "Update Local Task Variable", + "description": "Sets a variable in the context of a given task.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to set the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to set." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "PUT /task/aTaskId/variables/aVarName", + "description": "Status 204. No content.", + "value": { + "value": "someValue", + "type": "String" + } + }, + "example-2": { + "summary": "PUT /task/aTaskId/variables/aVarName", + "description": "An Object Variable PUT Request. Status 204. No content.", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable name, value or type is invalid, for example if the value could not be parsed to an `Integer`\nvalue or the passed variable type is not supported or a new transient variable has the name that is\nalready persisted. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable name is `null`, or the Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/localVariables/{varName}/data": { + "get": { + "operationId": "getTaskLocalVariableBinary", + "tags": [ + "Task Local Variable" + ], + "summary": "Get Local Task Variable (Binary)", + "description": "Retrieves a binary variable from the context of a given task by id. Applicable for byte array and file\nvariables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "responses": { + "200": { + "description": "Request successful.\n For binary variables or files without any MIME type information, a byte stream is returned.\n File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For binary variables or files without any MIME type information, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/variables/aVarName/data", + "value": "binary variable: Status 200. Content-Type: application/octet-stream" + } + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "binary", + "description": "File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set." + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/variables/aVarName/data", + "value": "file variable: Status 200. Content-Type: text/plain; charset\u003dUTF-8. Content-Disposition: attachment; filename\u003d\"someFile.txt\"" + } + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id exists but is not a binary variable.See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "setBinaryTaskLocalVariable", + "tags": [ + "Task Local Variable" + ], + "summary": "Update Local Task Variable (Binary)", + "description": "Sets the serialized value for a binary variable or the binary value for a file variable.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "requestBody": { + "description": "For binary variables a multipart form submit with the following parts:", + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormVariableBinaryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (1)", + "description": "Post binary content of a byte array variable.", + "value": "\n ```\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"image.png\"\n Content-Type: application/octet-stream\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n Bytes\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-2": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (2)", + "description": "Post the JSON serialization of a Java Class (**deprecated**).", + "value": "\n ```\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"type\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n java.util.ArrayList\u003cjava.lang.Object\u003e\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"data\"\n Content-Type: application/json; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n [\"foo\",\"bar\"]\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-3": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (3)", + "description": "Post a text file.", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"myFile.txt\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n File\n ------------------------------1e838f8f632a--\n ```\n " + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if no filename is set. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable name is `null`, or the Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/rendered-form": { + "get": { + "operationId": "getRenderedForm", + "tags": [ + "Task" + ], + "summary": "Get Rendered Form", + "description": "Retrieves the rendered form for a task. This method can be used to get the HTML\nrendering of a\n[Generated Task Form](https://docs.camunda.org/manual/7.15/user-guide/task-forms/#generated-task-forms).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to get the rendered form for." + } + ], + "responses": { + "200": { + "content": { + "application/xhtml+xml": { + "schema": { + "type": "string", + "format": "binary", + "description": "For `application/xhtml+xml` Responses, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "A `/task/anId/rendered-form` HTML GET response body providing the rendered (generated) form content.", + "value": "\u003cform class\u003d\"form-horizontal\"\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eCustomer ID\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"string\" name\u003d\"customerId\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"control-group\"\u003e\n \u003clabel class\u003d\"control-label\"\u003eAmount\u003c/label\u003e\n \u003cdiv class\u003d\"controls\"\u003e\n \u003cinput form-field type\u003d\"number\" name\u003d\"amount\"\u003e\u003c/input\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e" + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The task with the given id does not exist or has no form field metadata defined for\nthis task. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/resolve": { + "post": { + "operationId": "resolve", + "tags": [ + "Task" + ], + "summary": "Resolve", + "description": "Resolves a task and updates execution variables.\n\nResolving a task marks that the assignee is done with the task delegated to them, and\nthat it can be sent back to the owner. Can only be executed when the task has been\ndelegated. The assignee will be set to the owner, who performed the delegation.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to resolve." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteTaskDto" + }, + "examples": { + "example-1": { + "summary": "Request Body", + "description": "POST `/task/anId/resolve`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed\nto an Integer value or the passed variable type is not supported. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the task does not exist or the corresponding process instance could not be\nresumed successfully. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/submit-form": { + "post": { + "operationId": "submit", + "tags": [ + "Task" + ], + "summary": "Submit Form", + "description": "Completes a task and updates process variables using a form submit. There are two\ndifference between this method and the `complete` method:\n\n* If the task is in state `PENDING` - i.e., has been delegated before, it is not\ncompleted but resolved. Otherwise it will be completed.\n* If the task has Form Field Metadata defined, the process engine will perform backend\nvalidation for any form fields which have validators defined.\nSee the\n[Generated Task Forms](https://docs.camunda.org/manual/7.15/user-guide/task-forms/_index/#generated-task-forms)\nsection of the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/) for more information.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to submit the form for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteTaskDto" + }, + "examples": { + "example-1": { + "summary": "Request Body 1", + "description": "POST `/task/anId/submit-form`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + }, + "aFileVariable": { + "value": "TG9yZW0gaXBzdW0\u003d", + "type": "File", + "valueInfo": { + "filename": "myFile.txt" + } + } + } + } + }, + "example-2": { + "summary": "Request Body 2", + "description": "POST `/task/anId/complete`", + "value": { + "variables": { + "aVariable": { + "value": "aStringValue" + }, + "anotherVariable": { + "value": 42 + }, + "aThirdVariable": { + "value": true + } + }, + "withVariablesInReturn": true + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "Response Body", + "description": "Response of a submitted task form with variables in return", + "value": { + "aVariable": { + "value": "aStringValue", + "type": "String", + "valueInfo": {} + }, + "anotherVariable": { + "value": 42, + "type": "Integer", + "valueInfo": {} + }, + "aThirdVariable": { + "value": true, + "type": "Boolean", + "valueInfo": {} + } + } + } + } + } + }, + "description": "Request successful. The response contains the process variables." + }, + "204": { + "description": "Request successful. The response contains no variables." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if the value could not be parsed to an Integer value\nor the passed variable type is not supported.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for\nthe error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the task does not exist or the corresponding process instance could not be resumed successfully.\n\nSee the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling) for\nthe error response format." + } + } + } + }, + "/task/{id}/unclaim": { + "post": { + "operationId": "unclaim", + "tags": [ + "Task" + ], + "summary": "Unclaim", + "description": "Resets a task\u0027s assignee. If successful, the task is not assigned to a user.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to unclaim." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The Task with the given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/variables": { + "get": { + "operationId": "getTaskVariables", + "tags": [ + "Task Variable" + ], + "summary": "Get Task Variables", + "description": "Retrieves all variables visible from the task. A variable is visible from the task if it is a local task\nvariable or declared in a parent scope of the task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variables from." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on the server side (default `true`).\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\nNote: While `true` is the default value for reasons of backward compatibility, we recommend setting this\nparameter to `false` when developing web applications that are independent of the Java process\napplications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/task/aTaskId/variables`", + "value": { + "aVariableKey": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + }, + "example-2": { + "summary": "GET `/task/aTaskId/variables?deserializeValue\u003dfalse`", + "value": { + "aVariableKey": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "modifyTaskVariables", + "tags": [ + "Task Variable" + ], + "summary": "Update/Delete Task Variables", + "description": "Updates or deletes the variables visible from the task. Updates precede deletions. So, if a variable is\nupdated AND deleted, the deletion overrides the update. A variable is visible from the task if it is a\nlocal task variable or declared in a parent scope of the task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to set variables for." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchVariablesDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/aTaskId/variables`", + "description": "Status 204 Response: No content.", + "value": { + "modifications": { + "aVariable": { + "value": "aValue", + "type": "String" + }, + "anotherVariable": { + "value": 42, + "type": "Integer" + } + }, + "deletions": [ + "aThirdVariable", + "FourthVariable" + ] + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid. For example the value could not be parsed to an `Integer` value\nor the passed variable type is not supported. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Update or delete could not be executed because the task is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/variables/{varName}": { + "delete": { + "operationId": "deleteTaskVariable", + "tags": [ + "Task Variable" + ], + "summary": "Delete Task Variable", + "description": "Removes a variable that is visible to a task. A variable is visible to a task if it is a local task\nvariable or declared in a parent scope of the task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to delete the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to be removed." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is null or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getTaskVariable", + "tags": [ + "Task Variable" + ], + "summary": "Get Task Variable", + "description": "Retrieves a variable from the context of a given task.\nThe variable must be visible from the task. It is visible from the task if it is a local task variable or\ndeclared in a parent scope of the task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable from." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to get." + }, + { + "name": "deserializeValue", + "in": "query", + "schema": { + "default": true, + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on the server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\nNote: While `true` is the default value for reasons of backward compatibility, we recommend setting this\nparameter to `false` when developing web applications that are independent of the Java process\napplications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "GET `/task/aTaskId/variables/myObject123`", + "value": { + "value": { + "prop1": "a", + "prop2": "b" + }, + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + }, + "example-2": { + "summary": "GET `/task/aTaskId/variables/myObject123?deserializeValue\u003dfalse`", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "putTaskVariable", + "tags": [ + "Task Variable" + ], + "summary": "Update Task Variable", + "description": "Updates a process variable that is visible from the Task scope. A variable is visible from the task if it\nis a local task variable, or declared in a parent scope of the task. See the documentation on\n[variable scopes and visibility](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables#variable-scopes-and-variable-visibility).\n\n**Note**: If a variable doesn\u0027t exist, the variable is created in the top-most scope\nvisible from the task.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to set the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to set." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "examples": { + "example-1": { + "summary": "PUT /task/aTaskId/variables/aVarName", + "description": "Status 204. No content.", + "value": { + "value": "someValue", + "type": "String" + } + }, + "example-2": { + "summary": "PUT /task/aTaskId/variables/aVarName", + "description": "Status 204. No content.", + "value": { + "value": "ab", + "type": "Object", + "valueInfo": { + "objectTypeName": "com.example.MyObject", + "serializationDataFormat": "application/xml" + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable name, value or type is invalid, for example if the value could not be parsed to an `Integer`\nvalue or the passed variable type is not supported or a new transient variable has the name that is\nalready persisted. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable name is `null`, or the Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/task/{id}/variables/{varName}/data": { + "get": { + "operationId": "getTaskVariableBinary", + "tags": [ + "Task Variable" + ], + "summary": "Get Task Variable (Binary)", + "description": "Retrieves a binary variable from the context of a given task. Applicable for byte array and file\nvariables. The variable must be visible from the task. It is visible from the task if it is a local task\nvariable or declared in a parent scope of the task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "responses": { + "200": { + "description": "Request successful.\n For binary variables or files without any MIME type information, a byte stream is returned.\n File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For binary variables or files without any MIME type information, a byte stream is returned." + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/variables/aVarName/data", + "value": "binary variable: Status 200. Content-Type: application/octet-stream" + } + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "binary", + "description": "File variables with MIME type information are returned as the saved type.\n Additionally, for file variables the Content-Disposition header will be set." + }, + "examples": { + "example-1": { + "summary": "GET /task/aTaskId/variables/aVarName/data", + "value": "file variable: Status 200. Content-Type: text/plain; charset\u003dUTF-8. Content-Disposition: attachment; filename\u003d\"someFile.txt\"" + } + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id exists but is not a binary variable.See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "setBinaryTaskVariable", + "tags": [ + "Task Variable" + ], + "summary": "Update Task Variable (Binary)", + "description": "Sets the serialized value for a binary variable or the binary value for a file variable visible from the\ntask. A variable is visible from the task if it is a local task variable or declared in a parent scope of\nthe task. See documentation on\n[visiblity of variables](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/).", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the task to retrieve the variable for." + }, + { + "name": "varName", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The name of the variable to retrieve." + } + ], + "requestBody": { + "description": "For binary variables a multipart form submit with the following parts:", + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/MultiFormVariableBinaryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (1)", + "description": "Post binary content of a byte array variable.", + "value": "\n ```\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"image.png\"\n Content-Type: application/octet-stream\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ------------------------------354ddb6baeff\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n Bytes\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-2": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (2)", + "description": "Post the JSON serialization of a Java Class (**deprecated**).", + "value": "\n ```\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"type\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n java.util.ArrayList\u003cjava.lang.Object\u003e\n ------------------------------1e838f8f632a\n Content-Disposition: form-data; name\u003d\"data\"\n Content-Type: application/json; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n [\"foo\",\"bar\"]\n ------------------------------1e838f8f632a--\n ```\n " + }, + "example-3": { + "summary": "POST `/task/aTaskId/variables/aVarName/data` (3)", + "description": "Post a text file.", + "value": "\n ```\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"data\"; filename\u003d\"myFile.txt\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: binary\n\n \u003c\u003cByte Stream ommitted\u003e\u003e\n ---OSQH1f8lzs83iXFHphqfIuitaQfNKFY74Y\n Content-Disposition: form-data; name\u003d\"valueType\"\n Content-Type: text/plain; charset\u003dUS-ASCII\n Content-Transfer-Encoding: 8bit\n\n File\n ------------------------------1e838f8f632a--\n ```\n " + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The variable value or type is invalid, for example if no filename is set. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable name is `null`, or the Task id is `null` or does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/telemetry/configuration": { + "get": { + "operationId": "getTelemetryConfiguration", + "tags": [ + "Telemetry" + ], + "summary": "Fetch Telemetry Configuration", + "description": "Fetches Telemetry Configuration.", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TelemetryConfigurationDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "The Response content of a status 200", + "value": { + "enableTelemetry": true + } + } + } + } + }, + "description": "Request successful." + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the user who perform the operation is not a \u003cb\u003ecamunda-admin\u003c/b\u003e user." + } + } + }, + "post": { + "operationId": "configureTelemetry", + "tags": [ + "Telemetry" + ], + "summary": "Configure Telemetry", + "description": "Configures whether Camunda receives data collection of the process engine setup and usage.", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TelemetryConfigurationDto" + }, + "examples": { + "examle-1": { + "summary": "POST /telemetry/configuration", + "description": "The content of the Request Body", + "value": { + "enableTelemetry": true + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the user who perform the operation is not a \u003cb\u003ecamunda-admin\u003c/b\u003e user." + } + } + } + }, + "/tenant": { + "get": { + "operationId": "queryTenants", + "tags": [ + "Tenant" + ], + "summary": "Get Tenants", + "description": "Query for a list of tenants using a list of parameters. The size of the result set\ncan be retrieved by using the [Get Tenant\nCount](https://docs.camunda.org/manual/7.15/reference/rest/tenant/get-query-count/) method.", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "id", + "name" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the tenant." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the tenant." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name that the parameter is a substring of." + }, + { + "name": "userMember", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only tenants where the given user is a member of." + }, + { + "name": "groupMember", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only tenants where the given group is a member of." + }, + { + "name": "includingGroupsOfUser", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Select only tenants where the user or one of his groups is a member of.\nCan only be used in combination with the `userMember` parameter. Value may only be `true`,\nas `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantDto" + } + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/tenant?name\u003dtenantOne`", + "value": [ + { + "id": "tenantOne", + "name": "Tenant One" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy` is specified. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableTenantResourceOperations", + "tags": [ + "Tenant" + ], + "summary": "Tenant Resource Options", + "description": "The `/tenant` resource supports two custom OPTIONS requests, this one for the resource\nas such and one for individual tenant instances. The OPTIONS request\nallows checking for the set of available operations that the currently\nauthenticated user can perform on the `/tenant` resource. If the user\ncan perform an operation or not may depend on various things,\nincluding the users authorizations to interact with this resource and\nthe internal configuration of the process engine.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/tenant`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/tenant", + "rel": "list" + }, + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/tenant/count", + "rel": "count" + }, + { + "method": "POST", + "href": "http://localhost:8080/engine-rest/tenant/create", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/tenant/count": { + "get": { + "operationId": "getTenantCount", + "tags": [ + "Tenant" + ], + "summary": "Get Tenant Count", + "description": "Query for tenants using a list of parameters and retrieves the count.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the id of the tenant." + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name of the tenant." + }, + { + "name": "nameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the name that the parameter is a substring of." + }, + { + "name": "userMember", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only tenants where the given user is a member of." + }, + { + "name": "groupMember", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select only tenants where the given group is a member of." + }, + { + "name": "includingGroupsOfUser", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Select only tenants where the user or one of his groups is a member of.\nCan only be used in combination with the `userMember` parameter. Value may only be `true`,\nas `false` is the default behavior." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/tenant/count?name\u003dtenantOne`", + "value": { + "count": 1 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/tenant/create": { + "post": { + "operationId": "createTenant", + "tags": [ + "Tenant" + ], + "summary": "Create Tenant", + "description": "Create a new tenant.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDto" + }, + "examples": { + "example-1": { + "summary": "POST `/tenant/create`", + "value": { + "id": "tenantOne", + "name": "Tenant One" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The tenant could not be created due to an internal server error. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/tenant/{id}": { + "delete": { + "operationId": "deleteTenant", + "tags": [ + "Tenant" + ], + "summary": "Delete Tenant", + "description": "Deletes a tenant by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant to be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Tenant cannot be found. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "get": { + "operationId": "getTenant", + "tags": [ + "Tenant" + ], + "summary": "Get Tenant", + "description": "Retrieves a tenant.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant to be retrieved." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/tenant/tenantOne`", + "value": { + "id": "tenantOne", + "name": "Tenant One" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Tenant with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableTenantInstanceOperations", + "tags": [ + "Tenant" + ], + "summary": "Tenant Resource Options", + "description": "The `/tenant` resource supports two custom OPTIONS requests, one for the resource as such and this one for\nindividual tenant instances. The OPTIONS request allows checking for the set of available operations that\nthe currently authenticated user can perform on the `/tenant/{id}` resource. If the user can perform an\noperation or not may depend on various things, including the users authorizations to interact with this\nresource and the internal configuration of the process engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/tenant/tenantOne`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne", + "rel": "self" + }, + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne", + "rel": "update" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + }, + "put": { + "operationId": "updateTenant", + "tags": [ + "Tenant" + ], + "summary": "Update Tenant", + "description": "Updates a given tenant.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/tenant/tenantOne`", + "value": { + "id": "tenantOne", + "name": "Tenant One" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the tenant with the requested Id cannot be found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The tenant could not be updated due to an internal server error. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/tenant/{id}/group-members": { + "options": { + "operationId": "availableTenantGroupMembersOperations", + "tags": [ + "Tenant" + ], + "summary": "Tenant Group Membership Resource Options", + "description": "The OPTIONS request allows checking for the set of available operations that the\ncurrently authenticated user can perform on the resource. If the user\ncan perform an operation or not may depend on various things,\nincluding the users authorizations to interact with this resource and\nthe internal configuration of the process engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/tenant/tenantOne/group-members`", + "value": { + "links": [ + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne/group-members", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne/group-members", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/tenant/{id}/group-members/{groupId}": { + "delete": { + "operationId": "deleteGroupMembership", + "tags": [ + "Tenant" + ], + "summary": "Create Tenant Group Membership", + "description": "Creates a membership between a tenant and a group.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant." + }, + { + "name": "groupId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an internal error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "createGroupMembership", + "tags": [ + "Tenant" + ], + "summary": "Create Tenant Group Membership", + "description": "Creates a membership between a tenant and a group.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant." + }, + { + "name": "groupId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the group." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an internal error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/tenant/{id}/user-members": { + "options": { + "operationId": "availableTenantUserMembersOperations", + "tags": [ + "Tenant" + ], + "summary": "Tenant User Membership Resource Options", + "description": "The OPTIONS request allows checking for the set of available operations that the\ncurrently authenticated user can perform on the resource. If the user\ncan perform an operation or not may depend on various things,\nincluding the users authorizations to interact with this resource and\nthe internal configuration of the process engine.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "OPTIONS `/tenant/tenantOne/user-members`", + "value": { + "links": [ + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne/user-members", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/tenant/tenantOne/user-members", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/tenant/{id}/user-members/{userId}": { + "delete": { + "operationId": "deleteUserMembership", + "tags": [ + "Tenant" + ], + "summary": "Delete a Tenant User Membership", + "description": "Deletes a membership between a tenant and an user.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant." + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "createUserMembership", + "tags": [ + "Tenant" + ], + "summary": "Create Tenant User Membership", + "description": "Creates a membership between a tenant and an user.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the tenant." + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user." + } + ], + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "In case an internal error occurs. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/user": { + "get": { + "operationId": "getUsers", + "tags": [ + "User" + ], + "summary": "Get List", + "description": "Query for a list of users using a list of parameters.\nThe size of the result set can be retrieved by using the Get User Count method.\n[Get User Count](https://docs.camunda.org/manual/7.15/reference/rest/user/get-query-count/) method.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by user id" + }, + { + "name": "idIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of user ids." + }, + { + "name": "firstName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the first name of the user. Exact match." + }, + { + "name": "firstNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the first name that the parameter is a substring of." + }, + { + "name": "lastName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the last name of the user. Exact match." + }, + { + "name": "lastNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the last name that the parameter is a substring of." + }, + { + "name": "email", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the email of the user. Exact match." + }, + { + "name": "emailLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the email that the parameter is a substring of." + }, + { + "name": "memberOfGroup", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter for users which are members of the given group." + }, + { + "name": "memberOfTenant", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter for users which are members of the given tenant." + }, + { + "name": "potentialStarter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select Users that are potential starter for the given process definition." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "userId", + "firstName", + "lastName", + "email" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserProfileDto" + } + }, + "examples": { + "example-1": { + "summary": "GET `/user?firstName\u003dJohn`", + "value": [ + { + "id": "jonny1", + "firstName": "John", + "lastName": "Doe", + "email": "anEmailAddress" + }, + { + "id": "jonny2", + "firstName": "John", + "lastName": "Smoe", + "email": "anotherEmailAddress" + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder` parameter is supplied,\nbut no `sortBy`, or if an invalid operator for variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableOperations", + "tags": [ + "User" + ], + "summary": "Options", + "description": "The `/user` resource supports two custom `OPTIONS` requests, one for the resource as such\nand one for individual user instances. The `OPTIONS` request allows checking for the set of\navailable operations that the currently authenticated user can perform on the /user resource.\nIf the user can perform an operation or not may depend on various things, including the user\u0027s\nauthorizations to interact with this resource and the internal configuration of the process\nengine. `OPTIONS /user` returns available interactions on the resource.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "GET `/user`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/user", + "rel": "list" + }, + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/user/count", + "rel": "count" + }, + { + "method": "POST", + "href": "http://localhost:8080/engine-rest/user/create", + "rel": "create" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/user/count": { + "get": { + "operationId": "getUserCount", + "tags": [ + "User" + ], + "summary": "Get List Count", + "description": "Queries for the number of deployments that fulfill given parameters. Takes the same parameters as the\n[Get Users](https://docs.camunda.org/manual/7.15/reference/rest/user/get-query/) method.", + "parameters": [ + { + "name": "id", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by user id" + }, + { + "name": "idIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by a comma-separated list of user ids." + }, + { + "name": "firstName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the first name of the user. Exact match." + }, + { + "name": "firstNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the first name that the parameter is a substring of." + }, + { + "name": "lastName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the last name of the user. Exact match." + }, + { + "name": "lastNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the last name that the parameter is a substring of." + }, + { + "name": "email", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the email of the user. Exact match." + }, + { + "name": "emailLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the email that the parameter is a substring of." + }, + { + "name": "memberOfGroup", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter for users which are members of the given group." + }, + { + "name": "memberOfTenant", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter for users which are members of the given tenant." + }, + { + "name": "potentialStarter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only select Users that are potential starter for the given process definition." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "summary": "GET `/user/count?firstName\u003dJohn`", + "value": { + "count": 2 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example, if an invalid operator for variable\ncomparison is used. See the [Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/user/create": { + "post": { + "operationId": "createUser", + "tags": [ + "User" + ], + "summary": "Create", + "description": "Create a new user.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + }, + "examples": { + "example-1": { + "summary": "POST /user/create", + "value": { + "profile": { + "id": "jonny1", + "firstName": "John", + "lastName": "Doe", + "email": "anEmailAddress" + }, + "credentials": { + "password": "s3cret" + } + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful." + } + } + } + }, + "/user/{id}": { + "delete": { + "operationId": "deleteUser", + "tags": [ + "User" + ], + "summary": "Delete", + "description": "Deletes a user by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to be deleted." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "A Deployment with the provided id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "options": { + "operationId": "availableUserOperations", + "tags": [ + "User" + ], + "summary": "Options", + "description": "The `/user` resource supports two custom `OPTIONS` requests, one for the resource as such\nand one for individual user instances. The `OPTIONS` request allows checking for the set of\navailable operations that the currently authenticated user can perform on the /user resource.\nIf the user can perform an operation or not may depend on various things, including the user\u0027s\nauthorizations to interact with this resource and the internal configuration of the process\nengine. `OPTIONS /user/{id}` returns available interactions on a resource instance.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to be deleted." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceOptionsDto" + }, + "examples": { + "example-1": { + "summary": "GET `/user/peter`", + "value": { + "links": [ + { + "method": "GET", + "href": "http://localhost:8080/engine-rest/user/peter/profile", + "rel": "self" + }, + { + "method": "DELETE", + "href": "http://localhost:8080/engine-rest/user/peter", + "rel": "delete" + }, + { + "method": "PUT", + "href": "http://localhost:8080/engine-rest/user/peter/profile", + "rel": "update" + } + ] + } + } + } + } + }, + "description": "Request successful." + } + } + } + }, + "/user/{id}/credentials": { + "put": { + "operationId": "updateCredentials", + "tags": [ + "User" + ], + "summary": "Update Credentials", + "description": "Updates a user\u0027s credentials (password)", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to be updated." + }, + { + "name": "password", + "in": "query", + "schema": { + "type": "string" + }, + "required": true, + "description": "The users new password." + }, + { + "name": "authenticatedUserPassword", + "in": "query", + "schema": { + "type": "string" + }, + "required": true, + "description": "The password of the authenticated user who changes the password of the user\n(i.e., the user with passed id as path parameter)." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCredentialsDto" + }, + "examples": { + "example-1": { + "summary": "PUT /user/jonny1/credentials", + "value": { + "password": "s3cr3t", + "authenticatedUserPassword": "demo" + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "400": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "The authenticated user password does not match" + }, + "404": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "If the corresponding user cannot be found" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The user could not be updated due to an internal server error. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/user/{id}/profile": { + "get": { + "operationId": "getUserProfile", + "tags": [ + "User" + ], + "summary": "Get Profile", + "description": "Retrieves a user\u0027s profile.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to retrieve." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserProfileDto" + }, + "examples": { + "example-1": { + "summary": "GET `/user/jonny1/profile", + "value": { + "id": "jonny1", + "firstName": "John", + "lastName": "Doe", + "email": "anEmailAddress" + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Execution with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "put": { + "operationId": "updateProfile", + "tags": [ + "User" + ], + "summary": "Update User Profile", + "description": "Updates the profile information of an already existing user.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserProfileDto" + }, + "examples": { + "example-1": { + "summary": "PUT `/user/jonny1/profile`", + "value": { + "id": "jonny1", + "firstName": "John", + "lastName": "Doe", + "email": "aNewEmailAddress" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Request successful. This method returns no content." + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Identity service is read-only (Cannot modify users / groups / memberships)." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "If the user with the requested Id cannot be found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "The user could not be updated due to an internal server error. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/user/{id}/unlock": { + "post": { + "operationId": "unlockUser", + "tags": [ + "User" + ], + "summary": "Unlock User", + "description": "Unlocks a user by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the user to be unlocked." + } + ], + "responses": { + "204": { + "description": "Request successful." + }, + "403": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "The user who performed the operation is not a Camunda admin user." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "User cannot be found. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/variable-instance": { + "get": { + "operationId": "getVariableInstances", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instances", + "description": "Query for variable instances that fulfill given parameters. Parameters may be the\nproperties of variable instances, such as the name or type. The size\nof the result set can be retrieved by using the [Get Variable Instance\nCount](https://docs.camunda.org/manual/7.15/reference/rest/variable-instance/get-query-count/)\nmethod.", + "parameters": [ + { + "name": "variableName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by variable instance name." + }, + { + "name": "variableNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the variable instance name. The parameter can include the wildcard `%` to\nexpress like-strategy such as: starts with (`%`name), ends with (name`%`) or\ncontains (`%`name`%`)." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nprocess instance ids." + }, + { + "name": "executionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nexecution ids." + }, + { + "name": "caseInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated case instance ids." + }, + { + "name": "caseExecutionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated case execution ids." + }, + { + "name": "taskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated task\nids." + }, + { + "name": "batchIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nbatch ids." + }, + { + "name": "activityInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nactivity instance ids." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\ntenant ids." + }, + { + "name": "variableValues", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances that have the certain values.\nValue filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` -\ngreater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or\nequal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in `variableValues` case-insensitively. If set to `true`\n**variableName** and **variablename** are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in `variableValues` case-insensitively. If set to\n`true` **variableValue** and **variablevalue** are treated as equal." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "variableName", + "variableType", + "activityInstanceId", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + }, + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that\nstore custom Java objects) should be deserialized on server side (default\n`true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side\nand transformed to JSON using\n[Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property\nintrospection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized\nformat. For example, a variable that is serialized as XML will be returned as\na JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of backward\ncompatibility, we recommend setting this parameter to `false` when developing\nweb applications that are independent of the Java process applications\ndeployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableInstanceDto" + } + }, + "examples": { + "example-1": { + "description": "GET `/variable-instance?processInstanceIdIn\u003daProcessInstanceId,anotherProcessInstanceId\u0026variableValues\u003damount_gteq_5,amount_lteq_200`", + "value": [ + { + "id": "someId", + "name": "amount", + "type": "Integer", + "value": 5, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "aProcessInstanceId", + "executionId": "b68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_1:b68b71ca-e310-11e2-beb0-f0def1557726", + "caseExecutionId": null, + "caseInstanceId": null, + "errorMessage": null, + "tenantId": null + }, + { + "id": "someOtherId", + "name": "amount", + "type": "Integer", + "value": 15, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "aProcessInstanceId", + "executionId": "68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_1:b68b71ca-e310-11e2-beb0-f0def1557726", + "caseExecutionId": null, + "caseInstanceId": null, + "errorMessage": null, + "tenantId": null + }, + { + "id": "yetAnotherId", + "name": "amount", + "type": "Integer", + "value": 150, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "anotherProcessInstanceId", + "executionId": "68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_2:b68b71ca-e310-11e2-beb0-f0def1557726", + "caseExecutionId": null, + "caseInstanceId": null, + "errorMessage": null, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryVariableInstances", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instances (POST)", + "description": "Query for variable instances that fulfill given parameters through a JSON object.\nThis method is slightly more powerful than the\n[Get Variable Instances](https://docs.camunda.org/manual/7.15/reference/rest/variable-\ninstance/get-query/) method because it allows filtering by multiple\nvariable instances of types `String`, `Number` or `Boolean`.", + "parameters": [ + { + "name": "firstResult", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the index of the first result to return." + }, + { + "name": "maxResults", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "Pagination of results. Specifies the maximum number of results to return.\nWill return less results if there are no more results left." + }, + { + "name": "deserializeValues", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that\nstore custom Java objects) should be deserialized on server side (default\n`true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side\nand transformed to JSON using\n[Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property\nintrospection feature. Note that this requires the Java classes of the\nvariable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized\nformat. For example, a variable that is serialized as XML will be returned as\na JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of backward\ncompatibility, we recommend setting this parameter to `false` when developing\nweb applications that are independent of the Java process applications\ndeployed to the engine." + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/variable-instance`", + "value": { + "variableValues": [ + { + "name": "amount", + "operator": "gteq", + "value": 5 + }, + { + "name": "amount", + "operator": "lteq", + "value": 200 + } + ], + "processInstanceIdIn": [ + "aProcessInstanceId", + "anotherProcessInstanceId" + ], + "sorting": [ + { + "sortBy": "variableType", + "sortOrder": "asc" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableInstanceDto" + } + }, + "examples": { + "example-1": { + "description": "POST `/variable-instance`", + "value": [ + { + "id": "someId", + "name": "amount", + "type": "Integer", + "value": 5, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "aProcessInstanceId", + "executionId": "b68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_1:b68b71ca-e310-11e2-beb0-f0def1557726", + "errorMessage": null, + "tenantId": null + }, + { + "id": "someOtherId", + "name": "amount", + "type": "Integer", + "value": 15, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "aProcessInstanceId", + "executionId": "68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_1:b68b71ca-e310-11e2-beb0-f0def1557726", + "errorMessage": null, + "tenantId": null + }, + { + "id": "yetAnotherId", + "name": "amount", + "type": "Integer", + "value": 150, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "anotherProcessInstanceId", + "executionId": "68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_2:b68b71ca-e310-11e2-beb0-f0def1557726", + "errorMessage": null, + "tenantId": null + } + ] + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if a `sortOrder`\nparameter is supplied, but no `sortBy`, or if an invalid operator\nfor variable comparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/variable-instance/count": { + "get": { + "operationId": "getVariableInstancesCount", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instance Count", + "description": "Query for the number of variable instances that fulfill given parameters. Takes the\nsame parameters as the [Get Variable\nInstances](https://docs.camunda.org/manual/7.15/reference/rest/variable-instance/get-query/)\nmethod.", + "parameters": [ + { + "name": "variableName", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by variable instance name." + }, + { + "name": "variableNameLike", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Filter by the variable instance name. The parameter can include the wildcard `%` to\nexpress like-strategy such as: starts with (`%`name), ends with (name`%`) or\ncontains (`%`name`%`)." + }, + { + "name": "processInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nprocess instance ids." + }, + { + "name": "executionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nexecution ids." + }, + { + "name": "caseInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated case instance ids." + }, + { + "name": "caseExecutionIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated case execution ids." + }, + { + "name": "taskIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated task\nids." + }, + { + "name": "batchIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nbatch ids." + }, + { + "name": "activityInstanceIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\nactivity instance ids." + }, + { + "name": "tenantIdIn", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed and comma-separated\ntenant ids." + }, + { + "name": "variableValues", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Only include variable instances that have the certain values.\nValue filtering expressions are comma-separated and are structured as\nfollows:\n\nA valid parameter value has the form `key_operator_value`.\n`key` is the variable name, `operator` is the comparison operator to be used\nand `value` the variable value.\n\n**Note:** Values are always treated as `String` objects on server side.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` -\ngreater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or\nequal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + { + "name": "variableNamesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable names provided in `variableValues` case-insensitively. If set to `true`\n**variableName** and **variablename** are treated as equal." + }, + { + "name": "variableValuesIgnoreCase", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Match all variable values provided in `variableValues` case-insensitively. If set to\n`true` **variableValue** and **variablevalue** are treated as equal." + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "enum": [ + "variableName", + "variableType", + "activityInstanceId", + "tenantId" + ], + "type": "string" + }, + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + { + "name": "sortOrder", + "in": "query", + "schema": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "description": "Sort the results in a given order. Values may be asc for ascending order or desc for descending order.\nMust be used in conjunction with the sortBy parameter." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "GET `/variable-instance/count?processInstanceIdIn\u003daProcessInstanceId,anotherProcessInstanceId\u0026variableValues\u003damount_gteq_5,amount_lteq_200`", + "value": { + "count": 3 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if an invalid operator for variable\ncomparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + }, + "post": { + "operationId": "queryVariableInstancesCount", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instance Count (POST)", + "description": "Query for the number of variable instances that fulfill given parameters. This\nmethod takes the same message body as the\n[Get Variable Instances POST](https://docs.camunda.org/manual/7.15/reference/rest/variable-\ninstance/post-query/) method and therefore it is slightly more\npowerful than the [Get Variable Instance\nCount](https://docs.camunda.org/manual/7.15/reference/rest/variable-instance/get-query-count/)\nmethod.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableInstanceQueryDto" + }, + "examples": { + "example-1": { + "summary": "POST `/variable-instance/count`", + "value": { + "variableValues": [ + { + "name": "amount", + "operator": "gteq", + "value": "5" + }, + { + "name": "amount", + "operator": "lteq", + "value": 200 + } + ], + "processInstanceIdIn": [ + "aProcessInstanceId", + "anotherProcessInstanceId" + ] + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountResultDto" + }, + "examples": { + "example-1": { + "description": "POST `/variable-instance/count`", + "value": { + "count": 3 + } + } + } + } + }, + "description": "Request successful." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Returned if some of the query parameters are invalid, for example if an invalid operator for variable\ncomparison is used. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/variable-instance/{id}": { + "get": { + "operationId": "getVariableInstance", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instance", + "description": "Retrieves a variable by id.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the variable instance." + }, + { + "name": "deserializeValue", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on server side (default `true`).\n\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature.\nNote that this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format.\nFor example, a variable that is serialized as XML will be returned as a JSON string containing XML.\n\n**Note:** While `true` is the default value for reasons of backward compatibility, we recommend setting this\nparameter to `false` when developing web applications that are independent of the Java process\napplications deployed to the engine." + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VariableInstanceDto" + }, + "examples": { + "example-1": { + "summary": "Status 200.", + "description": "GET `/variable-instance/someId`", + "value": { + "id": "someId", + "name": "amount", + "type": "Integer", + "value": 5, + "processDefinitionId": "aProcessDefinitionId", + "processInstanceId": "aProcessInstanceId", + "executionId": "b68b71c9-e310-11e2-beb0-f0def1557726", + "taskId": null, + "batchId": null, + "activityInstanceId": "Task_1:b68b71ca-e310-11e2-beb0-f0def1557726", + "caseExecutionId": null, + "caseInstanceId": null, + "tenantId": null, + "errorMessage": null + } + } + } + } + }, + "description": "Request successful." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/variable-instance/{id}/data": { + "get": { + "operationId": "getVariableInstanceBinary", + "tags": [ + "Variable Instance" + ], + "summary": "Get Variable Instance (Binary)", + "description": "Retrieves the content of a variable by id. Applicable for byte array and file\nvariables.", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "The id of the variable instance." + } + ], + "responses": { + "200": { + "description": "Request successful. For binary variables or files without any MIME type information, a byte stream is returned.\n File variables with MIME type information are returned as the saved type. Additionally, for file\n variables the Content-Disposition header will be set.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "For files without any MIME type information, a byte stream is returned." + } + }, + "*/*": { + "schema": { + "type": "string", + "format": "binary", + "description": "Files with MIME type information are returned as the saved type. Additionally, for file\n responses, the Content-Disposition header will be set." + } + } + } + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id exists but does not serialize as binary data. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExceptionDto" + } + } + }, + "description": "Variable with given id does not exist. See the\n[Introduction](https://docs.camunda.org/manual/7.15/reference/rest/overview/#error-handling)\nfor the error response format." + } + } + } + }, + "/version": { + "get": { + "operationId": "getRestAPIVersion", + "tags": [ + "Version" + ], + "summary": "Get Rest API version", + "description": "Retrieves the version of the Rest API.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionDto" + }, + "examples": { + "example-1": { + "summary": "Status 200 Response", + "description": "The Response content of a status 200", + "value": { + "version": "7.13.0" + } + } + } + } + }, + "description": "Request successful." + } + } + } + } + }, + "components": { + "schemas": { + "AbstractSetRemovalTimeDto": { + "type": "object", + "properties": { + "absoluteRemovalTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date for which the instances shall be removed. Value may not be `null`.\n\n**Note:** Cannot be set in conjunction with `clearedRemovalTime` or `calculatedRemovalTime`." + }, + "clearedRemovalTime": { + "type": "boolean", + "nullable": true, + "description": "Sets the removal time to `null`. Value may only be `true`, as `false` is the default behavior.\n\n**Note:** Cannot be set in conjunction with `absoluteRemovalTime` or `calculatedRemovalTime`." + }, + "calculatedRemovalTime": { + "type": "boolean", + "nullable": true, + "description": "The removal time is calculated based on the engine\u0027s configuration settings. Value may only be `true`, as `false` is the default behavior.\n\n**Note:** Cannot be set in conjunction with `absoluteRemovalTime` or `clearedRemovalTime`." + } + } + }, + "ActivityInstanceDto": { + "type": "object", + "description": "A JSON object corresponding to the Activity Instance tree of the given process instance.", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the activity instance." + }, + "parentActivityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent activity instance, for example a sub process instance." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity." + }, + "activityName": { + "type": "string", + "nullable": true, + "description": "The name of the activity" + }, + "activityType": { + "type": "string", + "nullable": true, + "description": "The type of activity (corresponds to the XML element name in the BPMN 2.0, e.g., \u0027userTask\u0027)" + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance this activity instance is part of." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition." + }, + "childActivityInstances": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ActivityInstanceDto" + }, + "description": "A list of child activity instances." + }, + "childTransitionInstances": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/TransitionInstanceDto" + }, + "description": "A list of child transition instances.\nA transition instance represents an execution waiting in an asynchronous continuation." + }, + "executionIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of execution ids." + }, + "incidentIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of incident ids." + }, + "incidents": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ActivityInstanceIncidentDto" + }, + "description": "A list of JSON objects containing incident specific properties:\n* `id`: the id of the incident\n* `activityId`: the activity id in which the incident occurred" + } + } + }, + "ActivityInstanceIncidentDto": { + "type": "object", + "description": "An activity instance, incident pair.", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the incident." + }, + "parentActivityInstanceId": { + "type": "string", + "nullable": true, + "description": "The activity id in which the incident happened." + } + } + }, + "ActivityStatisticsResultDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the activity the results are aggregated for." + }, + "instances": { + "type": "integer", + "format": "int32", + "description": "The total number of running process instances of this activity." + }, + "failedJobs": { + "type": "integer", + "format": "int32", + "description": "The total number of failed jobs for the running instances.\n**Note**: Will be `0` (not `null`), if failed jobs were excluded." + }, + "incidents": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/IncidentStatisticsResultDto" + }, + "description": "Each item in the resulting array is an object which contains `incidentType` and `incidentCount`.\n**Note**: Will be an empty array, if `incidents` or `incidentsForType` were excluded.\nFurthermore, the array will be also empty if no incidents were found." + } + } + }, + "AnnotationDto": { + "type": "object", + "properties": { + "annotation": { + "type": "string", + "nullable": true, + "description": "The annotation value to put." + } + } + }, + "AtomLink": { + "type": "object", + "properties": { + "rel": { + "type": "string", + "nullable": true, + "description": "The relation of the link to the object that belongs to." + }, + "href": { + "type": "string", + "nullable": true, + "description": "The url of the link." + }, + "method": { + "type": "string", + "nullable": true, + "description": "The http method." + } + } + }, + "AttachmentDto": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the task attachment." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the task attachment." + }, + "description": { + "type": "string", + "nullable": true, + "description": "The description of the task attachment." + }, + "taskId": { + "type": "string", + "nullable": true, + "description": "The id of the task to which the attachment belongs." + }, + "type": { + "type": "string", + "nullable": true, + "description": "Indication of the type of content that this attachment refers to.\nCan be MIME type or any other indication." + }, + "url": { + "type": "string", + "nullable": true, + "description": "The url to the remote content of the task attachment." + }, + "createTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the variable was inserted.\n[Default format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "removalTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time after which the attachment should be removed by the History Cleanup job.\n[Default format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "rootProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance id of the root process instance that initiated the process containing the task." + } + } + }, + { + "$ref": "#/components/schemas/LinkableDto" + } + ] + }, + "AuthenticationResult": { + "type": "object", + "properties": { + "authenticatedUser": { + "type": "string", + "nullable": true, + "description": "An id of authenticated user." + }, + "isAuthenticated": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating if user is authenticated." + }, + "tenants": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Will be null." + }, + "groups": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Will be null." + } + } + }, + "AuthorizationExceptionDto": { + "allOf": [ + { + "type": "object", + "properties": { + "userId": { + "type": "string", + "nullable": true, + "description": "The id of the user that does not have expected permissions" + }, + "missingAuthorizations": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/MissingAuthorizationDto" + }, + "description": "" + } + } + }, + { + "$ref": "#/components/schemas/ExceptionDto" + } + ] + }, + "BasicUserCredentialsDto": { + "type": "object", + "properties": { + "username": { + "type": "string", + "nullable": true, + "description": "The username of a user." + }, + "password": { + "type": "string", + "nullable": true, + "description": "A password of a user." + } + } + }, + "BatchDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the batch." + }, + "type": { + "type": "string", + "nullable": true, + "description": "The type of the batch.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/batch/#creating-a-batch)\nfor more information about batch types." + }, + "totalJobs": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The total jobs of a batch is the number of batch execution jobs required to complete the batch." + }, + "jobsCreated": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of batch execution jobs already created by the seed job." + }, + "batchJobsPerSeed": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of batch execution jobs created per seed job invocation.\nThe batch seed job is invoked until it has created all batch execution jobs required by the batch\n(see `totalJobs` property)." + }, + "invocationsPerBatchJob": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Every batch execution job invokes the command executed by the batch `invocationsPerBatchJob` times.\nE.g., for a process instance migration batch this specifies the number of process instances which are migrated per batch execution job." + }, + "seedJobDefinitionId": { + "type": "string", + "nullable": true, + "description": "The job definition id for the seed jobs of this batch." + }, + "monitorJobDefinitionId": { + "type": "string", + "nullable": true, + "description": "The job definition id for the monitor jobs of this batch." + }, + "batchJobDefinitionId": { + "type": "string", + "nullable": true, + "description": "The job definition id for the batch execution jobs of this batch." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Indicates whether this batch is suspended or not." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the batch." + }, + "createUserId": { + "type": "string", + "nullable": true, + "description": "The id of the user that created the batch." + } + } + }, + "BatchStatisticsDto": { + "allOf": [ + { + "type": "object", + "properties": { + "remainingJobs": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of remaining batch execution jobs. This does include failed batch execution jobs and\nbatch execution jobs which still have to be created by the seed job." + }, + "completedJobs": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of completed batch execution jobs. This does include aborted/deleted batch execution jobs." + }, + "failedJobs": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of failed batch execution jobs. This does not include aborted or deleted batch execution jobs." + } + } + }, + { + "$ref": "#/components/schemas/BatchDto" + } + ] + }, + "CaseDefinitionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the case definition" + }, + "key": { + "type": "string", + "nullable": true, + "description": "The key of the case definition, i.e., the id of the CMMN 2.0 XML case definition." + }, + "category": { + "type": "string", + "nullable": true, + "description": "The category of the case definition." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the case definition." + }, + "version": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The version of the case definition that the engine assigned to it." + }, + "resource": { + "type": "string", + "nullable": true, + "description": "The file name of the case definition." + }, + "deploymentId": { + "type": "string", + "nullable": true, + "description": "The deployment id of the case definition." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the case definition." + }, + "historyTimeToLive": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "History time to live value of the case definition.\nIs used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup)." + } + } + }, + "CheckPasswordPolicyResultDto": { + "allOf": [ + { + "type": "object", + "properties": { + "valid": { + "type": "boolean", + "nullable": true, + "description": "`true` if the password is compliant with the policy, otherwise `false`." + } + } + }, + { + "$ref": "#/components/schemas/PasswordPolicyDto" + } + ] + }, + "CheckPasswordPolicyRuleDto": { + "allOf": [ + { + "type": "object", + "properties": { + "valid": { + "type": "boolean", + "nullable": true, + "description": "`true` if the password is compliant with this rule, otherwise `false`." + } + } + }, + { + "$ref": "#/components/schemas/PasswordPolicyRuleDto" + } + ] + }, + "CommentDto": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the task comment." + }, + "userId": { + "type": "string", + "nullable": true, + "description": "The id of the user who created the comment." + }, + "taskId": { + "type": "string", + "nullable": true, + "description": "The id of the task to which the comment belongs." + }, + "time": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time when the comment was created.\n[Default format]($(docsUrl)/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "message": { + "type": "string", + "nullable": true, + "description": "The content of the comment." + }, + "removalTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time after which the comment should be removed by the History Cleanup job.\n[Default format]($(docsUrl)/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "rootProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance id of the root process instance that initiated the process\ncontaining the task." + } + } + }, + { + "$ref": "#/components/schemas/LinkableDto" + } + ] + }, + "CompleteExternalTaskDto": { + "allOf": [ + { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs. Each key is a variable name and each value a JSON variable value object with the following properties:" + }, + "localVariables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing local variable key-value pairs. Local variables are set only in the scope of external task. Each key is a variable name and each value a JSON variable value object with the following properties:" + } + } + }, + { + "$ref": "#/components/schemas/HandleExternalTaskDto" + } + ] + }, + "CompleteTaskDto": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs." + }, + "withVariablesInReturn": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Indicates whether the response should contain the process variables or not. The\ndefault is `false` with a response code of `204`. If set to `true` the response\ncontains the process variables and has a response code of `200`. If the task is not\nassociated with a process instance (e.g. if it\u0027s part of a case instance) no\nvariables will be returned." + } + } + }, + "ConditionQueryParameterDto": { + "type": "object", + "properties": { + "operator": { + "type": "string", + "nullable": true, + "enum": [ + "eq", + "neq", + "gt", + "gteq", + "lt", + "lteq", + "like" + ], + "description": "Comparison operator to be used" + }, + "value": { + "type": "object", + "description": "The variable value, could be of type boolean, string or number" + } + } + }, + "CorrelationMessageDto": { + "type": "object", + "properties": { + "messageName": { + "type": "string", + "nullable": true, + "description": "The name of the message to deliver." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "Used for correlation of process instances that wait for incoming messages.\nWill only correlate to executions that belong to a process instance with the provided business key." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "Used to correlate the message for a tenant with the given id.\nWill only correlate to executions and process definitions which belong to the tenant.\nMust not be supplied in conjunction with a `withoutTenantId`." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A Boolean value that indicates whether the message should only be correlated to executions\nand process definitions which belong to no tenant or not. Value may only be `true`, as `false`\nis the default behavior.\nMust not be supplied in conjunction with a `tenantId`." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Used to correlate the message to the process instance with the given id." + }, + "correlationKeys": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "Used for correlation of process instances that wait for incoming messages.\nHas to be a JSON object containing key-value pairs that are matched against process instance variables\nduring correlation. Each key is a variable name and each value a JSON variable value object with the\nfollowing properties." + }, + "localCorrelationKeys": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "Local variables used for correlation of executions (process instances) that wait for incoming messages.\nHas to be a JSON object containing key-value pairs that are matched against local variables during correlation.\nEach key is a variable name and each value a JSON variable value object with the following properties." + }, + "processVariables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A map of variables that is injected into the triggered execution or process instance after the message\nhas been delivered. Each key is a variable name and each value a JSON variable value object with\nthe following properties." + }, + "processVariablesLocal": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A map of local variables that is injected into the triggered execution or process instance after the\nmessage has been delivered. Each key is a variable name and each value a JSON variable value object\nwith the following properties." + }, + "all": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A Boolean value that indicates whether the message should be correlated to exactly one entity or multiple entities.\nIf the value is set to `false`, the message will be correlated to exactly one entity (execution or process definition).\nIf the value is set to `true`, the message will be correlated to multiple executions and a process definition that\ncan be instantiated by this message in one go." + }, + "resultEnabled": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A Boolean value that indicates whether the result of the correlation should be returned or not.\nIf this property is set to `true`, there will be returned a list of message correlation result objects. Depending on the\nall property, there will be either one ore more returned results in the list.\n\nThe default value is `false`, which means no result will be returned." + }, + "variablesInResultEnabled": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A Boolean value that indicates whether the result of the correlation should contain process variables or not.\nThe parameter resultEnabled should be set to `true` in order to use this it.\n\nThe default value is `false`, which means the variables will not be returned." + } + } + }, + "CountResultDto": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "description": "The number of matching instances." + } + } + }, + "CreateIncidentDto": { + "type": "object", + "properties": { + "incidentType": { + "type": "string", + "nullable": true, + "description": "A type of the new incident." + }, + "configuration": { + "type": "string", + "nullable": true, + "description": "A configuration for the new incident." + }, + "message": { + "type": "string", + "nullable": true, + "description": "A message for the new incident." + } + } + }, + "DecisionDefinitionDiagramDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the decision definition." + }, + "dmnXml": { + "type": "string", + "nullable": true, + "description": "An escaped XML string containing the XML that this decision definition was deployed with.\nCarriage returns, line feeds and quotation marks are escaped." + } + } + }, + "DecisionDefinitionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the decision definition" + }, + "key": { + "type": "string", + "nullable": true, + "description": "The key of the decision definition, i.e., the id of the DMN 1.0 XML decision definition." + }, + "category": { + "type": "string", + "nullable": true, + "description": "The category of the decision definition." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the decision definition." + }, + "version": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The version of the decision definition that the engine assigned to it." + }, + "resource": { + "type": "string", + "nullable": true, + "description": "The file name of the decision definition." + }, + "deploymentId": { + "type": "string", + "nullable": true, + "description": "The deployment id of the decision definition." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the decision definition." + }, + "decisionRequirementsDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the decision requirements definition this decision definition belongs to." + }, + "decisionRequirementsDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the decision requirements definition this decision definition belongs to." + }, + "historyTimeToLive": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "History time to live value of the decision definition.\nIs used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup)." + }, + "versionTag": { + "type": "string", + "nullable": true, + "description": "The version tag of the decision definition." + } + } + }, + "DecisionRequirementsDefinitionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the decision requirements definition" + }, + "key": { + "type": "string", + "nullable": true, + "description": "The key of the decision requirements definition, i.e., the id of the DMN 1.0 XML decision definition." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the decision requirements definition." + }, + "category": { + "type": "string", + "nullable": true, + "description": "The category of the decision requirements definition." + }, + "version": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The version of the decision requirements definition that the engine assigned to it." + }, + "resource": { + "type": "string", + "nullable": true, + "description": "The file name of the decision requirements definition." + }, + "deploymentId": { + "type": "string", + "nullable": true, + "description": "The deployment id of the decision requirements definition." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the decisionrequirements definition." + } + } + }, + "DeleteHistoricProcessInstancesDto": { + "type": "object", + "properties": { + "historicProcessInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list historic process instance ids to delete." + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "deleteReason": { + "type": "string", + "nullable": true, + "description": "A string with delete reason." + }, + "failIfNotExists": { + "type": "boolean", + "nullable": true, + "description": "If set to `false`, the request will still be successful if one ore more of the process ids are not found." + } + } + }, + "DeleteProcessInstancesDto": { + "type": "object", + "properties": { + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list process instance ids to delete." + }, + "deleteReason": { + "type": "string", + "nullable": true, + "description": "A string with delete reason." + }, + "skipCustomListeners": { + "type": "boolean", + "nullable": true, + "description": "Skip execution listener invocation for activities that are started or ended as part of this request." + }, + "skipSubprocesses": { + "type": "boolean", + "nullable": true, + "description": "Skip deletion of the subprocesses related to deleted processes as part of this request." + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + } + } + }, + "DeploymentDto": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the deployment." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the deployment." + }, + "deploymentTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time when the deployment was created." + }, + "source": { + "type": "string", + "nullable": true, + "description": "The source of the deployment." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the deployment." + } + } + }, + { + "$ref": "#/components/schemas/LinkableDto" + } + ] + }, + "DeploymentResourceDto": { + "title": "DeploymentResourceDto", + "type": "object", + "description": "A JSON object corresponding to the `Resource` interface in the engine.\nIts properties are as follows:", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the deployment resource." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the deployment resource" + }, + "deploymentId": { + "type": "string", + "nullable": true, + "description": "The id of the deployment." + } + } + }, + "DeploymentWithDefinitionsDto": { + "allOf": [ + { + "type": "object", + "properties": { + "deployedProcessDefinitions": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + }, + "description": "A JSON Object containing a property for each of the process definitions,\nwhich are successfully deployed with that deployment.\nThe key is the process definition id, the value is a JSON Object corresponding to the process definition." + }, + "deployedDecisionDefinitions": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/DecisionDefinitionDto" + }, + "description": "A JSON Object containing a property for each of the decision definitions,\nwhich are successfully deployed with that deployment.\nThe key is the decision definition id, the value is a JSON Object corresponding to the decision definition." + }, + "deployedDecisionRequirementsDefinitions": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/DecisionRequirementsDefinitionDto" + }, + "description": "A JSON Object containing a property for each of the decision requirements definitions,\nwhich are successfully deployed with that deployment.\nThe key is the decision requirements definition id, the value is a JSON Object corresponding to the decision requirements definition." + }, + "deployedCaseDefinitions": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/CaseDefinitionDto" + }, + "description": "A JSON Object containing a property for each of the case definitions,\nwhich are successfully deployed with that deployment.\nThe key is the case definition id, the value is a JSON Object corresponding to the case definition." + } + } + }, + { + "$ref": "#/components/schemas/DeploymentDto" + } + ] + }, + "DurationReportResultDto": { + "type": "object", + "properties": { + "period": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Specifies a timespan within a year.\n**Note:** The period must be interpreted in conjunction with the returned `periodUnit`." + }, + "periodUnit": { + "type": "string", + "nullable": true, + "enum": [ + "MONTH", + "QUARTER" + ], + "description": "The unit of the given period. Possible values are `MONTH` and `QUARTER`." + }, + "minimum": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The smallest duration in milliseconds of all completed process instances which were started in the given period." + }, + "maximum": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The greatest duration in milliseconds of all completed process instances which were started in the given period." + }, + "average": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The average duration in milliseconds of all completed process instances which were started in the given period." + } + } + }, + "EvaluateDecisionDto": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "" + } + } + }, + "EvaluationConditionDto": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A map of variables which are used for evaluation of the conditions and are injected into the process instances which have been triggered.\nEach key is a variable name and each value a JSON variable value object with the following properties." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "Used for the process instances that have been triggered after the evaluation." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "Used to evaluate a condition for a tenant with the given id.\nWill only evaluate conditions of process definitions which belong to the tenant." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "A Boolean value that indicates whether the conditions should only be evaluated of process definitions which belong to no tenant or not.\nValue may only be true, as false is the default behavior." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Used to evaluate conditions of the process definition with the given id." + } + } + }, + "EventSubscriptionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the event subscription." + }, + "eventType": { + "type": "string", + "nullable": true, + "description": "The type of the event subscription." + }, + "eventName": { + "type": "string", + "nullable": true, + "description": "The name of the event this subscription belongs to as defined in the process model." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The execution that is subscribed on the referenced event." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance this subscription belongs to." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The identifier of the activity that this event subscription belongs to.\nThis could for example be the id of a receive task." + }, + "createdDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time this event subscription was created." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant this event subscription belongs to.\nCan be `null` if the subscription belongs to no single tenant." + } + } + }, + "EventSubscriptionQueryDto": { + "type": "object", + "description": "A event subscription query which retrieves a list of event subscriptions", + "properties": { + "eventSubscriptionId": { + "type": "string", + "nullable": true, + "description": "The id of the event subscription." + }, + "eventName": { + "type": "string", + "nullable": true, + "description": "The name of the event this subscription belongs to as defined in the process model." + }, + "eventType": { + "type": "string", + "nullable": true, + "enum": [ + "message", + "signal", + "compensate", + "conditional" + ], + "description": "The type of the event subscription." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The execution that is subscribed on the referenced event." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance this subscription belongs to." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The identifier of the activity that this event subscription belongs to.\nThis could for example be the id of a receive task." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nOnly select subscriptions that belong to one of the given tenant ids." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only select subscriptions which have no tenant id.\nValue may only be `true`, as `false` is the default behavior." + }, + "includeEventSubscriptionsWithoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Select event subscriptions which have no tenant id.\nCan be used in combination with tenantIdIn parameter.\nValue may only be `true`, as `false` is the default behavior." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "created", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "ExceptionDto": { + "title": "ExceptionDto", + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true, + "description": "An exception class indicating the occurred error." + }, + "message": { + "type": "string", + "nullable": true, + "description": "A detailed message of the error." + } + } + }, + "ExecutionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the Execution." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the root of the execution tree representing the process instance." + }, + "ended": { + "type": "boolean", + "nullable": true, + "description": "Indicates if the execution is ended." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant this execution belongs to. Can be `null`\nif the execution belongs to no single tenant." + } + } + }, + "ExecutionQueryDto": { + "type": "object", + "description": "A Execution instance query which defines a list of Execution instances", + "properties": { + "businessKey": { + "type": "string", + "nullable": true, + "description": "Filter by the business key of the process instances the executions belong to." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by the process definition the executions run on." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Filter by the key of the process definition the executions run on." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the process instance the execution belongs to." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the activity the execution currently executes." + }, + "signalEventSubscriptionName": { + "type": "string", + "nullable": true, + "description": "Select only those executions that expect a signal of the given name." + }, + "messageEventSubscriptionName": { + "type": "string", + "nullable": true, + "description": "Select only those executions that expect a message of the given name." + }, + "active": { + "type": "boolean", + "nullable": true, + "description": "Only include active executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Only include suspended executions. Value may only be `true`, as `false` is the default\nbehavior." + }, + "incidentId": { + "type": "string", + "nullable": true, + "description": "Filter by the incident id." + }, + "incidentType": { + "type": "string", + "nullable": true, + "description": "Filter by the incident type. See the [User Guide](/manual/develop/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + "incidentMessage": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message. Exact match." + }, + "incidentMessageLike": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message that the parameter is a substring of." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of tenant ids. An execution must have one of the given\ntenant ids." + }, + "variables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "An array to only include executions that have variables with certain values.\n\nThe array consists of objects with the three properties `name`, `operator`\nand `value`.\n`name (String)` is the variable name, `operator (String)` is the comparison\noperator to be used and `value` the variable value.\n`value` may be `String`, `Number` or `Boolean`.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` -\ngreater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or\nequal to;\n`like`." + }, + "processVariables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "An array to only include executions that belong to a process instance with variables\nwith certain values.\n\nThe array consists of objects with the three properties `name`, `operator`\nand `value`.\n`name (String)` is the variable name, `operator (String)` is the comparison\noperator to be used and `value` the variable value.\n`value` may be `String`, `Number` or `Boolean`.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to." + }, + "variableNamesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable names provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableName** and **variablename** are\ntreated as equal." + }, + "variableValuesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable values provided in `variables` and `processVariables` case-\ninsensitively. If set to `true` **variableValue** and **variablevalue** are\ntreated as equal." + }, + "sorting": { + "type": "array", + "description": "An array of criteria to sort the result by. Each element of the array is\n an object that specifies one ordering. The position in the array\n identifies the rank of an ordering, i.e., whether it is primary, secondary,\n etc. Has no effect for the `/count` endpoint", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "instanceId", + "definitionKey", + "definitionId", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "ExecutionTriggerDto": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs. Each key is a variable name and\neach value a JSON variable value object." + } + } + }, + "ExtendLockOnExternalTaskDto": { + "allOf": [ + { + "type": "object", + "properties": { + "newDuration": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "An amount of time (in milliseconds). This is the new lock duration starting from the\ncurrent moment." + } + } + }, + { + "$ref": "#/components/schemas/HandleExternalTaskDto" + } + ] + }, + "ExternalTaskBpmnError": { + "allOf": [ + { + "type": "object", + "properties": { + "workerId": { + "type": "string", + "nullable": true, + "description": "The id of the worker that reports the failure. Must match the id of the worker who has most recently\nlocked the task." + } + } + }, + { + "$ref": "#/components/schemas/TaskBpmnErrorDto" + } + ] + }, + "ExternalTaskDto": { + "title": "ExternalTaskDto", + "type": "object", + "description": "An External Task object with the following properties", + "properties": { + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity that this external task belongs to." + }, + "activityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the activity instance that the external task belongs to." + }, + "errorMessage": { + "type": "string", + "nullable": true, + "description": "The full error message submitted with the latest reported failure executing this task; `null` if no\nfailure was reported previously or if no error message was submitted" + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution that the external task belongs to." + }, + "id": { + "type": "string", + "nullable": true, + "description": "The id of the external task." + }, + "lockExpirationTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date that the task\u0027s most recent lock expires or has expired." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition the external task is defined in." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definition the external task is defined in." + }, + "processDefinitionVersionTag": { + "type": "string", + "nullable": true, + "description": "The version tag of the process definition the external task is defined in." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance the external task belongs to." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant the external task belongs to." + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of retries the task currently has left." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating whether the external task is suspended or not." + }, + "workerId": { + "type": "string", + "nullable": true, + "description": "The id of the worker that posesses or posessed the most recent lock." + }, + "topicName": { + "type": "string", + "nullable": true, + "description": "The topic name of the external task." + }, + "priority": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The priority of the external task." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key of the process instance the external task belongs to." + } + } + }, + "ExternalTaskFailureDto": { + "allOf": [ + { + "type": "object", + "properties": { + "errorMessage": { + "type": "string", + "nullable": true, + "description": "An message indicating the reason of the failure." + }, + "errorDetails": { + "type": "string", + "nullable": true, + "description": "A detailed error description." + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "A number of how often the task should be retried. Must be \u003e\u003d 0. If this is 0, an incident is created and\nthe task cannot be fetched anymore unless the retries are increased again. The incident\u0027s message is set\nto the `errorMessage` parameter." + }, + "retryTimeout": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "A timeout in milliseconds before the external task becomes available again for fetching. Must be \u003e\u003d 0." + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs. Each key is a variable name and each value a JSON variable value object with the following properties:" + }, + "localVariables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing local variable key-value pairs. Local variables are set only in the scope of external task. Each key is a variable name and each value a JSON variable value object with the following properties:" + } + } + }, + { + "$ref": "#/components/schemas/HandleExternalTaskDto" + } + ] + }, + "ExternalTaskQueryDto": { + "title": "ExternalTaskQueryDto", + "type": "object", + "description": "A JSON object with the following properties:", + "properties": { + "externalTaskId": { + "type": "string", + "nullable": true, + "description": "Filter by an external task\u0027s id." + }, + "externalTaskIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by the comma-separated list of external task ids." + }, + "topicName": { + "type": "string", + "nullable": true, + "description": "Filter by an external task topic." + }, + "workerId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the worker that the task was most recently locked by." + }, + "locked": { + "type": "boolean", + "nullable": true, + "description": "Only include external tasks that are currently locked (i.e., they have a lock time and it has not expired).\nValue may only be `true`, as `false` matches any external task." + }, + "notLocked": { + "type": "boolean", + "nullable": true, + "description": "Only include external tasks that are currently not locked (i.e., they have no lock or it has expired).\nValue may only be `true`, as `false` matches any external task." + }, + "withRetriesLeft": { + "type": "boolean", + "nullable": true, + "description": "Only include external tasks that have a positive (\u0026gt; 0) number of retries (or `null`). Value may only be\n`true`, as `false` matches any external task." + }, + "noRetriesLeft": { + "type": "boolean", + "nullable": true, + "description": "Only include external tasks that have 0 retries. Value may only be `true`, as `false` matches any\nexternal task." + }, + "lockExpirationAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to external tasks that have a lock that expires after a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "lockExpirationBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to external tasks that have a lock that expires before a given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the activity that an external task is created for." + }, + "activityIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by the comma-separated list of ids of the activities that an external task is created for." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the execution that an external task belongs to." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the process instance that an external task belongs to." + }, + "processInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a comma-separated list of process instance ids that an external task may belong to." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the process definition that an external task belongs to." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a comma-separated list of tenant ids.\nAn external task must have one of the given tenant ids." + }, + "active": { + "type": "boolean", + "nullable": true, + "description": "Only include active tasks. Value may only be `true`, as `false` matches any external task." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Only include suspended tasks. Value may only be `true`, as `false` matches any external task." + }, + "priorityHigherThanOrEquals": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "Only include jobs with a priority higher than or equal to the given value.\nValue must be a valid `long` value." + }, + "priorityLowerThanOrEquals": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "Only include jobs with a priority lower than or equal to the given value.\nValue must be a valid `long` value." + }, + "sorting": { + "type": "array", + "description": "A JSON array of criteria to sort the result by. Each element of the array is a JSON object that\n specifies one ordering. The position in the array identifies the rank of an ordering, i.e., whether\n it is primary, secondary, etc. The ordering objects have the following properties:\n\n **Note:** The `sorting` properties will not be applied to the External Task count query.", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "id", + "lockExpirationTime", + "processInstanceId", + "processDefinitionId", + "processDefinitionKey", + "taskPriority", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "FetchExternalTaskTopicDto": { + "type": "object", + "required": [ + "topicName", + "lockDuration" + ], + "properties": { + "topicName": { + "type": "string", + "description": "**Mandatory.** The topic\u0027s name." + }, + "lockDuration": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "**Mandatory.** The duration to lock the external tasks for in milliseconds." + }, + "variables": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A JSON array of `String` values that represent variable names. For each result task belonging to this\ntopic, the given variables are returned as well if they are accessible from the external task\u0027s\nexecution. If not provided - all variables will be fetched." + }, + "localVariables": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "If `true` only local variables will be fetched." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "A `String` value which enables the filtering of tasks based on process instance business key." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter tasks based on process definition id." + }, + "processDefinitionIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter tasks based on process definition ids." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Filter tasks based on process definition key." + }, + "processDefinitionKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter tasks based on process definition keys." + }, + "processDefinitionVersionTag": { + "type": "string", + "nullable": true, + "description": "Filter tasks based on process definition version tag." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Filter tasks without tenant id." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter tasks based on tenant ids." + }, + "processVariables": { + "type": "object", + "additionalProperties": true, + "description": "A `JSON` object used for filtering tasks based on process instance variable values. A property name of\nthe object represents a process variable name, while the property value represents the process variable\nvalue to filter tasks by." + }, + "deserializeValues": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Determines whether serializable variable values (typically variables that store custom Java objects)\nshould be deserialized on server side (default `false`).\n\nIf set to `true`, a serializable variable will be deserialized on server side and transformed to JSON\nusing [Jackson\u0027s](https://github.com/FasterXML/jackson) POJO/bean property introspection feature. Note\nthat this requires the Java classes of the variable value to be on the REST API\u0027s classpath.\n\nIf set to `false`, a serializable variable will be returned in its serialized format. For example, a\nvariable that is serialized as XML will be returned as a JSON string containing XML." + }, + "includeExtensionProperties": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Determines whether custom extension properties defined in the BPMN activity of the external task (e.g.\nvia the Extensions tab in the Camunda modeler) should be included in the response. Default: false" + } + } + }, + "FetchExternalTasksDto": { + "type": "object", + "required": [ + "workerId", + "maxTasks" + ], + "properties": { + "workerId": { + "type": "string", + "description": "**Mandatory.** The id of the worker on which behalf tasks are fetched. The returned tasks are locked for\nthat worker and can only be completed when providing the same worker id." + }, + "maxTasks": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "**Mandatory.** The maximum number of tasks to return." + }, + "usePriority": { + "type": "boolean", + "nullable": true, + "description": "A `boolean` value, which indicates whether the task should be fetched based on its priority\nor arbitrarily." + }, + "asyncResponseTimeout": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The [Long Polling](https://docs.camunda.org/manual/7.15/user-guide/process-engine/external-tasks/#long-polling-to-fetch-and-lock-external-tasks)\ntimeout in milliseconds.\n\n**Note:** The value cannot be set larger than 1.800.000 milliseconds (corresponds to 30 minutes)." + }, + "topics": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/FetchExternalTaskTopicDto" + }, + "description": "A JSON array of topic objects for which external tasks should be fetched. The returned tasks may be\narbitrarily distributed among these topics. Each topic object has the following properties:" + } + } + }, + "FormDto": { + "title": "FormDto", + "type": "object", + "properties": { + "key": { + "type": "string", + "nullable": true, + "description": "The form key." + }, + "contextPath": { + "type": "string", + "nullable": true, + "description": "The context path of the process application. If the task (or the process definition) does not\nbelong to a process application deployment or a process definition at all, this\nproperty is not set." + } + } + }, + "GroupDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the group." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the group." + }, + "type": { + "type": "string", + "nullable": true, + "description": "The type of the group." + } + } + }, + "GroupQueryDto": { + "type": "object", + "description": "A group instance query which defines a list of group instances", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the group." + }, + "idIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a JSON string array of group ids." + }, + "name": { + "type": "string", + "nullable": true, + "description": "Filter by the name of the group." + }, + "nameLike": { + "type": "string", + "nullable": true, + "description": "Filter by the name that the parameter is a substring of." + }, + "type": { + "type": "string", + "nullable": true, + "description": "Filter by the type of the group." + }, + "member": { + "type": "string", + "nullable": true, + "description": "Only retrieve groups where the given user id is a member of." + }, + "memberOfTenant": { + "type": "string", + "nullable": true, + "description": "Only retrieve groups which are members of the given tenant." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "id", + "name", + "type" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "HandleExternalTaskDto": { + "type": "object", + "properties": { + "workerId": { + "type": "string", + "description": "**Mandatory.** The ID of the worker who is performing the operation on the external task.\nIf the task is already locked, must match the id of the worker who has most recently\nlocked the task." + } + } + }, + "HistoricActivityInstanceDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the activity instance." + }, + "parentActivityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent activity instance, for example a sub process instance." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity that this object is an instance of." + }, + "activityName": { + "type": "string", + "nullable": true, + "description": "The name of the activity that this object is an instance of." + }, + "activityType": { + "type": "string", + "nullable": true, + "description": "The type of the activity that this object is an instance of." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definition that this activity instance belongs to." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition that this activity instance belongs to." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance that this activity instance belongs to." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution that executed this activity instance." + }, + "taskId": { + "type": "string", + "nullable": true, + "description": "The id of the task that is associated to this activity instance. Is only set if the activity is a user task." + }, + "assignee": { + "type": "string", + "nullable": true, + "description": "The assignee of the task that is associated to this activity instance. Is only set if the activity is a user task." + }, + "calledProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the called process instance. Is only set if the activity is a call activity and the called instance a process instance." + }, + "calledCaseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the called case instance. Is only set if the activity is a call activity and the called instance a case instance." + }, + "startTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the instance was started. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "endTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the instance ended. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "durationInMillis": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The time the instance took to finish (in milliseconds)." + }, + "canceled": { + "type": "boolean", + "nullable": true, + "description": "If `true`, this activity instance is canceled." + }, + "completeScope": { + "type": "boolean", + "nullable": true, + "description": "If `true`, this activity instance did complete a BPMN 2.0 scope." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the activity instance." + }, + "removalTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time after which the activity instance should be removed by the History Cleanup job. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "rootProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance id of the root process instance that initiated the process containing this activity instance." + } + } + }, + "HistoricActivityInstanceQueryDto": { + "type": "object", + "description": "A historic activity instance query which defines a group of historic activity instances", + "properties": { + "activityInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by activity instance id." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by process instance id." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by process definition id." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the execution that executed the activity instance." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "Filter by the activity id (according to BPMN 2.0 XML)." + }, + "activityName": { + "type": "string", + "nullable": true, + "description": "Filter by the activity name (according to BPMN 2.0 XML)." + }, + "activityType": { + "type": "string", + "nullable": true, + "description": "Filter by activity type." + }, + "taskAssignee": { + "type": "string", + "nullable": true, + "description": "Only include activity instances that are user tasks and assigned to a given user." + }, + "finished": { + "type": "boolean", + "nullable": true, + "description": "Only include finished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + "unfinished": { + "type": "boolean", + "nullable": true, + "description": "Only include unfinished activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + "canceled": { + "type": "boolean", + "nullable": true, + "description": "Only include canceled activity instances.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + "completeScope": { + "type": "boolean", + "nullable": true, + "description": "Only include activity instances which completed a scope.\nValue may only be `true`, as `false` behaves the same as when the property is not set." + }, + "startedBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were started before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "startedAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were started after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "finishedBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were finished before the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "finishedAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were finished after the given date. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Must be a JSON array of Strings. An activity instance must have one of the given tenant ids." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only include historic activity instances that belong to no tenant. Value may only be `true`, as `false` is the default behavior." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "activityInstanceId", + "instanceId", + "executionId", + "activityId", + "activityName", + "activityType", + "startTime", + "endTime", + "duration", + "definitionId", + "occurrence", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "HistoricProcessInstanceDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the process instance." + }, + "rootProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance id of the root process instance that initiated the process." + }, + "superProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent process instance, if it exists." + }, + "superCaseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent case instance, if it exists." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent case instance, if it exists." + }, + "processDefinitionName": { + "type": "string", + "nullable": true, + "description": "The name of the process definition that this process instance belongs to." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definition that this process instance belongs to." + }, + "processDefinitionVersion": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The version of the process definition that this process instance belongs to." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition that this process instance belongs to." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key of the process instance." + }, + "startTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the instance was started. Default [format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/) `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "endTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the instance ended. Default [format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/) `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "removalTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time after which the instance should be removed by the History Cleanup job. Default [format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/) `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "durationInMillis": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The time the instance took to finish (in milliseconds)." + }, + "startUserId": { + "type": "string", + "nullable": true, + "description": "The id of the user who started the process instance." + }, + "startActivityId": { + "type": "string", + "nullable": true, + "description": "The id of the initial activity that was executed (e.g., a start event)." + }, + "deleteReason": { + "type": "string", + "nullable": true, + "description": "The provided delete reason in case the process instance was canceled during execution." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the process instance." + }, + "state": { + "type": "string", + "nullable": true, + "enum": [ + "ACTIVE", + "SUSPENDED", + "COMPLETED", + "EXTERNALLY_TERMINATED", + "INTERNALLY_TERMINATED" + ], + "description": "Last state of the process instance, possible values are:\n\n`ACTIVE` - running process instance\n\n`SUSPENDED` - suspended process instances\n\n`COMPLETED` - completed through normal end event\n\n`EXTERNALLY_TERMINATED` - terminated externally, for instance through REST API\n\n`INTERNALLY_TERMINATED` - terminated internally, for instance by terminating boundary event" + } + } + }, + "HistoricProcessInstanceQueryDto": { + "type": "object", + "description": "A historic process instance query which defines a group of historic process instances", + "properties": { + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by process instance id." + }, + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by process instance ids. Must be a JSON array of `Strings`." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by the process definition the instances run on." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Filter by the key of the process definition the instances run on." + }, + "processDefinitionKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of process definition keys. A process instance must have one of the given process definition keys. Must be a JSON array of `Strings`." + }, + "processDefinitionName": { + "type": "string", + "nullable": true, + "description": "Filter by the name of the process definition the instances run on." + }, + "processDefinitionNameLike": { + "type": "string", + "nullable": true, + "description": "Filter by process definition names that the parameter is a substring of." + }, + "processDefinitionKeyNotIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Exclude instances that belong to a set of process definitions. Must be a JSON array of `Strings`." + }, + "processInstanceBusinessKey": { + "type": "string", + "nullable": true, + "description": "Filter by process instance business key." + }, + "processInstanceBusinessKeyLike": { + "type": "string", + "nullable": true, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + "rootProcessInstances": { + "type": "boolean", + "nullable": true, + "description": "Restrict the query to all process instances that are top level process instances." + }, + "finished": { + "type": "boolean", + "nullable": true, + "description": "Only include finished process instances. This flag includes all process instances\nthat are completed or terminated. Value may only be `true`, as `false` is the default behavior." + }, + "unfinished": { + "type": "boolean", + "nullable": true, + "description": "Only include unfinished process instances. Value may only be `true`, as `false` is the default behavior." + }, + "withIncidents": { + "type": "boolean", + "nullable": true, + "description": "Only include process instances which have an incident. Value may only be `true`, as `false` is the default behavior." + }, + "withRootIncidents": { + "type": "boolean", + "nullable": true, + "description": "Only include process instances which have a root incident. Value may only be `true`, as `false` is the default behavior." + }, + "incidentType": { + "type": "string", + "nullable": true, + "description": "Filter by the incident type. See the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + "incidentStatus": { + "type": "string", + "nullable": true, + "enum": [ + "open", + "resolved" + ], + "description": "Only include process instances which have an incident in status either open or resolved. To get all process instances, use the query parameter withIncidents." + }, + "incidentMessage": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message. Exact match." + }, + "incidentMessageLike": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message that the parameter is a substring of." + }, + "startedBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were started before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "startedAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were started after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "finishedBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were finished before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "finishedAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that were finished after the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "executedActivityAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that executed an activity after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "executedActivityBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that executed an activity before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "executedJobAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that executed an job after the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "executedJobBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to instances that executed an job before the given date (inclusive).\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "startedBy": { + "type": "string", + "nullable": true, + "description": "Only include process instances that were started by the given user." + }, + "superProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that are sub process instances of the given process instance. Takes a process instance id." + }, + "subProcessInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict query to one process instance that has a sub process instance with the given id." + }, + "superCaseInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + "subCaseInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict query to one process instance that has a sub case instance with the given id." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that are sub process instances of the given case instance. Takes a case instance id." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of tenant ids. A process instance must have one of the given tenant ids. Must be a JSON array of `Strings`" + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only include historic process instances which belong to no tenant. Value may only be `true`, as `false` is the default behavior." + }, + "executedActivityIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to instances that executed an activity with one of given ids. Must be a JSON array of `Strings`" + }, + "activeActivityIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to instances that have an active activity with one of given ids. Must be a JSON array of `Strings`" + }, + "active": { + "type": "boolean", + "nullable": true, + "description": "Restrict to instances that are active." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Restrict to instances that are suspended." + }, + "completed": { + "type": "boolean", + "nullable": true, + "description": "Restrict to instances that are completed." + }, + "externallyTerminated": { + "type": "boolean", + "nullable": true, + "description": "Restrict to instances that are externallyTerminated." + }, + "internallyTerminated": { + "type": "boolean", + "nullable": true, + "description": "Restrict to instances that are internallyTerminated." + }, + "variables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "A JSON array to only include process instances that have/had variables with certain values.\nThe array consists of objects with the three properties `name`, `operator` and `value`. `name` (`String`) is the variable name,\n`operator` (`String`) is the comparison operator to be used and `value` the variable value.\n\nValue may be `String`, `Number` or `Boolean`.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`.\n" + }, + "variableNamesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable names provided in variables case-insensitively. If set to `true` variableName and variablename are treated as equal." + }, + "variableValuesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable values provided in variables case-insensitively. If set to `true` variableValue and variablevalue are treated as equal." + }, + "orQueries": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "description": "A JSON array of nested historic process instance queries with OR semantics.\n\nA process instance matches a nested query if it fulfills at least one of the query\u0027s predicates.\n\nWith multiple nested queries, a process instance must fulfill at least one predicate of each query\n([Conjunctive Normal Form](https://en.wikipedia.org/wiki/Conjunctive_normal_form)).\n\nAll process instance query properties can be used except for: `sorting`\n\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-engine-api/#or-queries) for more information about OR queries." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "instanceId", + "definitionId", + "definitionKey", + "definitionName", + "definitionVersion", + "businessKey", + "startTime", + "endTime", + "duration", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "HistoryTimeToLiveDto": { + "type": "object", + "properties": { + "historyTimeToLive": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "New value for historyTimeToLive field of the definition.\nCan be `null`. Can not be negative." + } + } + }, + "IdentityLinkDto": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "userId": { + "type": "string", + "nullable": true, + "description": "The id of the user participating in this link. Either `userId` or `groupId` is set." + }, + "groupId": { + "type": "string", + "nullable": true, + "description": "The id of the group participating in this link. Either `groupId` or `userId` is set." + }, + "type": { + "type": "string", + "nullable": true, + "description": "The type of the identity link. The value of the this property can be user-defined. The Process Engine\nprovides three pre-defined Identity Link `type`s:\n\n* `candidate`\n* `assignee` - reserved for the task assignee\n* `owner` - reserved for the task owner\n\n**Note**: When adding or removing an Identity Link, the `type` property must be defined." + } + } + }, + "IdentityServiceGroupDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the group." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the group." + } + } + }, + "IdentityServiceGroupInfoDto": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/IdentityServiceGroupDto" + }, + "description": "An array of group objects." + }, + "groupUsers": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/IdentityServiceUserDto" + }, + "description": "An array that contains all users that are member in one of the groups." + } + } + }, + "IdentityServiceUserDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the user." + }, + "firstName": { + "type": "string", + "nullable": true, + "description": "The firstname of the user." + }, + "lastName": { + "type": "string", + "nullable": true, + "description": "The lastname of the user." + }, + "displayName": { + "type": "string", + "nullable": true, + "description": "The displayName is generated from the id or firstName and lastName if available." + } + } + }, + "IncidentDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the incident." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition this incident is associated with." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance this incident is associated with." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution this incident is associated with." + }, + "incidentTimestamp": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time this incident happened. By [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + }, + "incidentType": { + "type": "string", + "nullable": true, + "description": "The type of incident, for example: `failedJobs` will be returned in case of an incident which identified\na failed job during the execution of a process instance. See the\n[User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity this incident is associated with." + }, + "failedActivityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity on which the last exception occurred." + }, + "causeIncidentId": { + "type": "string", + "nullable": true, + "description": "The id of the associated cause incident which has been triggered." + }, + "rootCauseIncidentId": { + "type": "string", + "nullable": true, + "description": "The id of the associated root cause incident which has been triggered." + }, + "configuration": { + "type": "string", + "nullable": true, + "description": "The payload of this incident." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant this incident is associated with." + }, + "incidentMessage": { + "type": "string", + "nullable": true, + "description": "The message of this incident." + }, + "jobDefinitionId": { + "type": "string", + "nullable": true, + "description": "The job definition id the incident is associated with." + }, + "annotation": { + "type": "string", + "nullable": true, + "description": "The annotation set to the incident." + } + } + }, + "IncidentStatisticsResultDto": { + "type": "object", + "properties": { + "incidentType": { + "type": "string", + "nullable": true, + "description": "The type of the incident the number of incidents is aggregated for.\nSee the [User Guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/incidents/#incident-types) for a list of incident types." + }, + "incidentCount": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The total number of incidents for the corresponding incident type." + } + } + }, + "JobConditionQueryParameterDto": { + "type": "object", + "properties": { + "operator": { + "type": "string", + "nullable": true, + "enum": [ + "gt", + "lt" + ], + "description": "Comparison operator to be used." + }, + "value": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date value to compare with." + } + } + }, + "JobDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the job." + }, + "jobDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the associated job definition." + }, + "dueDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date on which this job is supposed to be processed." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance which execution created the job." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The specific execution id on which the job was created." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition which this job belongs to." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definition which this job belongs to." + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of retries this job has left." + }, + "exceptionMessage": { + "type": "string", + "nullable": true, + "description": "The message of the exception that occurred, the last time the job was executed. Is\nnull when no exception occurred." + }, + "failedActivityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity on which the last exception occurred, the last time the job\nwas executed. Is null when no exception occurred." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating whether the job is suspended or not." + }, + "priority": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The job\u0027s priority for execution." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant which this job belongs to." + }, + "createTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date on which this job has been created." + } + } + }, + "JobDuedateDto": { + "type": "object", + "properties": { + "duedate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date to set when the job has the next execution." + }, + "cascade": { + "type": "boolean", + "nullable": true, + "description": "A boolean value to indicate if modifications to the due date should cascade to\nsubsequent jobs. (e.g. Modify the due date of a timer by +15\nminutes. This flag indicates if a +15 minutes should be applied to all\nsubsequent timers.) This flag only affects timer jobs and only works if due date\nis not null. Default: `false`" + } + } + }, + "JobQueryDto": { + "type": "object", + "description": "A Job instance query which defines a list of Job instances", + "properties": { + "jobId": { + "type": "string", + "nullable": true, + "description": "Filter by job id." + }, + "jobIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of job ids." + }, + "jobDefinitionId": { + "type": "string", + "nullable": true, + "description": "Only select jobs which exist for the given job definition." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Only select jobs which exist for the given process instance." + }, + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only select jobs which exist for the given list of process instance ids." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "Only select jobs which exist for the given execution." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by the id of the process definition the jobs run on." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Filter by the key of the process definition the jobs run on." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "Only select jobs which exist for an activity with the given id." + }, + "withRetriesLeft": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs which have retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + "executable": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs which are executable, i.e., retries \u003e 0 and due date is `null` or due\ndate is in the past. Value may only be `true`, as `false` is the default\nbehavior." + }, + "timers": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs that are timers. Cannot be used together with `messages`. Value may only\nbe `true`, as `false` is the default behavior." + }, + "messages": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs that are messages. Cannot be used together with `timers`. Value may only\nbe `true`, as `false` is the default behavior." + }, + "dueDates": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/JobConditionQueryParameterDto" + }, + "description": "Only select jobs where the due date is lower or higher than the given date.\n" + }, + "createTimes": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/JobConditionQueryParameterDto" + }, + "description": "Only select jobs created before or after the given date.\n" + }, + "withException": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs that failed due to an exception. Value may only be `true`, as `false` is\nthe default behavior." + }, + "exceptionMessage": { + "type": "string", + "nullable": true, + "description": "Only select jobs that failed due to an exception with the given message." + }, + "failedActivityId": { + "type": "string", + "nullable": true, + "description": "Only select jobs that failed due to an exception at an activity with the given id." + }, + "noRetriesLeft": { + "type": "boolean", + "nullable": true, + "description": "Only select jobs which have no retries left. Value may only be `true`, as `false` is the\ndefault behavior." + }, + "active": { + "type": "boolean", + "nullable": true, + "description": "Only include active jobs. Value may only be `true`, as `false` is the default behavior." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Only include suspended jobs. Value may only be `true`, as `false` is the default behavior." + }, + "priorityLowerThanOrEquals": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "Only include jobs with a priority lower than or equal to the given value. Value must be a\nvalid `long` value." + }, + "priorityHigherThanOrEquals": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "Only include jobs with a priority higher than or equal to the given value. Value must be a\nvalid `long` value." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include jobs which belong to one of the passed tenant ids." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only include jobs which belong to no tenant. Value may only be `true`, as `false` is the\ndefault behavior." + }, + "includeJobsWithoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Include jobs which belong to no tenant. Can be used in combination with `tenantIdIn`.\nValue may only be `true`, as `false` is the default behavior." + }, + "sorting": { + "type": "array", + "description": "An array of criteria to sort the result by. Each element of the array is\n an object that specifies one ordering. The position in the array\n identifies the rank of an ordering, i.e., whether it is primary, secondary,\n etc. Does not have an effect for the `count` endpoint.", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "jobId", + "executionId", + "processInstanceId", + "processDefinitionId", + "processDefinitionKey", + "jobPriority", + "jobRetries", + "jobDueDate", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "JobSuspensionStateDto": { + "allOf": [ + { + "type": "object", + "description": "Defines by which selection criterion to activate or suspend jobs.\nThis selection criterion are mutually exclusive and can only be on of:\n* `jobDefinitionId`\n* `processDefinitionId`\n* `processInstanceId`\n* `processDefinitionKey`", + "properties": { + "jobDefinitionId\t": { + "type": "string", + "nullable": true, + "description": "The job definition id of the jobs to activate or suspend." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The process definition id of the jobs to activate or suspend." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The process instance id of the jobs to activate or suspend." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The process definition key of the jobs to activate or suspend." + }, + "processDefinitionTenantId": { + "type": "string", + "nullable": true, + "description": "Only activate or suspend jobs of a process definition which belongs to a tenant\nwith the given id. Works only when selecting with `processDefinitionKey`." + }, + "processDefinitionWithoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only activate or suspend jobs of a process definition which belongs to no tenant.\nValue may only be `true`, as `false` is the default behavior. Works only when selecting with `processDefinitionKey`." + } + } + }, + { + "$ref": "#/components/schemas/SuspensionStateDto" + } + ] + }, + "LinkableDto": { + "type": "object", + "properties": { + "links": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/AtomLink" + }, + "description": "The links associated to this resource, with `method`, `href` and `rel`." + } + } + }, + "LockExternalTaskDto": { + "allOf": [ + { + "type": "object", + "properties": { + "lockDuration": { + "type": "integer", + "format": "int64", + "description": "The duration to lock the external task for in milliseconds.\n**Note:** Attempting to lock an already locked external task with the same `workerId`\nwill succeed and a new lock duration will be set, starting from the current moment." + } + } + }, + { + "$ref": "#/components/schemas/HandleExternalTaskDto" + } + ] + }, + "LockedExternalTaskDto": { + "title": "LockedExternalTaskDto", + "type": "object", + "properties": { + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity that this external task belongs to." + }, + "activityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the activity instance that the external task belongs to." + }, + "errorMessage": { + "type": "string", + "nullable": true, + "description": "The full error message submitted with the latest reported failure executing this task;`null` if no failure\nwas reported previously or if no error message was submitted" + }, + "errorDetails": { + "type": "string", + "nullable": true, + "description": "The error details submitted with the latest reported failure executing this task.`null` if no failure was\nreported previously or if no error details was submitted" + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution that the external task belongs to." + }, + "id": { + "type": "string", + "nullable": true, + "description": "The id of the external task." + }, + "lockExpirationTime": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date that the task\u0027s most recent lock expires or has expired." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition the external task is defined in." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definition the external task is defined in." + }, + "processDefinitionVersionTag": { + "type": "string", + "nullable": true, + "description": "The version tag of the process definition the external task is defined in." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance the external task belongs to." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant the external task belongs to." + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of retries the task currently has left." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Whether the process instance the external task belongs to is suspended." + }, + "workerId": { + "type": "string", + "nullable": true, + "description": "The id of the worker that posesses or posessed the most recent lock." + }, + "priority": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The priority of the external task." + }, + "topicName": { + "type": "string", + "nullable": true, + "description": "The topic name of the external task." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key of the process instance the external task belongs to." + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing a property for each of the requested variables. The key is the variable name,\nthe value is a JSON object of serialized variable values with the following properties:" + } + } + }, + "MessageCorrelationResultWithVariableDto": { + "type": "object", + "description": "The `processInstance` property only has a value if the resultType is set to `ProcessDefinition`.\nThe processInstance with the properties as described in the\n[get single instance](https://docs.camunda.org/manual/7.15/reference/rest/process-instance/get/) method.\n\nThe `execution` property only has a value if the resultType is set to `Execution`.\nThe execution with the properties as described in the\n[get single execution](https://docs.camunda.org/manual/7.15/reference/rest/execution/get/) method.", + "properties": { + "resultType": { + "type": "string", + "nullable": true, + "enum": [ + "Execution", + "ProcessDefinition" + ], + "description": "Indicates if the message was correlated to a message start event or an \nintermediate message catching event. In the first case, the resultType is \n`ProcessDefinition` and otherwise `Execution`." + }, + "processInstance": { + "$ref": "#/components/schemas/ProcessInstanceDto" + }, + "execution": { + "$ref": "#/components/schemas/ExecutionDto" + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "This property is returned if the `variablesInResultEnabled` is set to `true`.\nContains a list of the process variables. " + } + } + }, + "MetricsIntervalResultDto": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The interval timestamp." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the metric." + }, + "reporter": { + "type": "string", + "nullable": true, + "description": "The reporter of the metric. `null` if the metrics are aggregated by reporter." + }, + "value": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The value of the metric aggregated by the interval." + } + } + }, + "MetricsResultDto": { + "type": "object", + "properties": { + "result": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The current sum (count) for the selected metric." + } + } + }, + "MissingAuthorizationDto": { + "type": "object", + "properties": { + "permissionName": { + "type": "string", + "nullable": true, + "description": "The permission name that the user is missing." + }, + "resourceName": { + "type": "string", + "nullable": true, + "description": "The name of the resource that the user is missing permission for." + }, + "resourceId": { + "type": "string", + "nullable": true, + "description": "The id of the resource that the user is missing permission for." + } + } + }, + "MultiFormAttachmentDto": { + "type": "object", + "properties": { + "attachment-name": { + "type": "string", + "nullable": true, + "description": "The name of the attachment." + }, + "attachment-description": { + "type": "string", + "nullable": true, + "description": "The description of the attachment." + }, + "attachment-type": { + "type": "string", + "nullable": true, + "description": "The type of the attachment." + }, + "url": { + "type": "string", + "nullable": true, + "description": "The url to the remote content of the attachment." + }, + "content": { + "type": "string", + "format": "binary", + "nullable": true, + "description": "The content of the attachment." + } + } + }, + "MultiFormDeploymentDto": { + "type": "object", + "properties": { + "tenant-id": { + "type": "string", + "nullable": true, + "description": "The tenant id for the deployment to be created." + }, + "deployment-source": { + "type": "string", + "nullable": true, + "description": "The source for the deployment to be created." + }, + "deploy-changed-only": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A flag indicating whether the process engine should perform duplicate checking on a per-resource basis.\nIf set to true, only those resources that have actually changed are deployed.\nChecks are made against resources included previous deployments of the same name and only against the latest versions of those resources.\nIf set to true, the option enable-duplicate-filtering is overridden and set to true." + }, + "enable-duplicate-filtering": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "A flag indicating whether the process engine should perform duplicate checking for the deployment or not.\nThis allows you to check if a deployment with the same name and the same resouces already exists and\nif true, not create a new deployment but instead return the existing deployment. The default value is false." + }, + "deployment-name": { + "type": "string", + "nullable": true, + "description": "The name for the deployment to be created." + }, + "data": { + "type": "string", + "format": "binary", + "nullable": true, + "description": "The binary data to create the deployment resource.\nIt is possible to have more than one form part with different form part names for the binary data to create a deployment." + } + } + }, + "MultiFormVariableBinaryDto": { + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "binary", + "nullable": true, + "description": "The binary data to be set.\nFor File variables, this multipart can contain the filename, binary value and MIME type of the file variable to be set\nOnly the filename is mandatory." + }, + "valueType": { + "type": "string", + "nullable": true, + "enum": [ + "Bytes", + "File" + ], + "description": "The name of the variable type. Either Bytes for a byte array variable or File for a file variable." + } + } + }, + "ParseExceptionDto": { + "allOf": [ + { + "type": "object", + "properties": { + "details": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/ResourceReportDto" + }, + "description": "A JSON Object containing list of errors and warnings occurred during deployment." + } + } + }, + { + "$ref": "#/components/schemas/ExceptionDto" + } + ] + }, + "PasswordPolicyDto": { + "type": "object", + "properties": { + "rules": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/PasswordPolicyRuleDto" + }, + "description": "An array of password policy rules. Each element of the array is representing one rule of the policy." + } + } + }, + "PasswordPolicyRequestDto": { + "type": "object", + "properties": { + "password": { + "type": "string", + "nullable": true, + "description": "The candidate password to be check against the password policy." + }, + "profile": { + "$ref": "#/components/schemas/UserProfileDto" + } + } + }, + "PasswordPolicyRuleDto": { + "type": "object", + "description": "Describes a rule of a password policy.", + "properties": { + "placeholder": { + "type": "string", + "nullable": true, + "description": "A placeholder string that contains the name of a password policy rule." + }, + "parameter": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map that describes the characteristics of a password policy rule, such as the minimum number of digits." + } + } + }, + "PatchVariablesDto": { + "type": "object", + "properties": { + "modifications": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs." + }, + "deletions": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "An array of String keys of variables to be deleted." + } + } + }, + "PriorityDto": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "format": "int64", + "nullable": true, + "description": "The priority of the resource." + } + } + }, + "ProblemDto": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true, + "description": "The message of the problem." + }, + "line": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The line where the problem occurred." + }, + "column": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The column where the problem occurred." + }, + "mainElementId": { + "type": "string", + "nullable": true, + "description": "The main element id where the problem occurred." + }, + "elementIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of element id affected by the problem." + } + } + }, + "ProcessDefinitionDiagramDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the process definition." + }, + "bpmn20Xml": { + "type": "string", + "nullable": true, + "description": "An escaped XML string containing the XML that this definition was deployed with.\nCarriage returns, line feeds and quotation marks are escaped." + } + } + }, + "ProcessDefinitionDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the process definition" + }, + "key": { + "type": "string", + "nullable": true, + "description": "The key of the process definition, i.e., the id of the BPMN 2.0 XML process definition." + }, + "category": { + "type": "string", + "nullable": true, + "description": "The category of the process definition." + }, + "description": { + "type": "string", + "nullable": true, + "description": "The description of the process definition." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the process definition." + }, + "version": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The version of the process definition that the engine assigned to it." + }, + "resource": { + "type": "string", + "nullable": true, + "description": "The file name of the process definition." + }, + "deploymentId": { + "type": "string", + "nullable": true, + "description": "The deployment id of the process definition." + }, + "diagram": { + "type": "string", + "nullable": true, + "description": "The file name of the process definition diagram, if it exists." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating whether the definition is suspended or not." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the process definition." + }, + "versionTag": { + "type": "string", + "nullable": true, + "description": "The version tag of the process definition." + }, + "historyTimeToLive": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "History time to live value of the process definition.\nIs used within [History cleanup](https://docs.camunda.org/manual/7.15/user-guide/process-engine/history/#history-cleanup)." + }, + "startableInTasklist": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating whether the process definition is startable in Tasklist or not." + } + } + }, + "ProcessDefinitionStatisticsResultDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the process definition the results are aggregated for." + }, + "instances": { + "type": "integer", + "format": "int32", + "description": "The total number of running process instances of this process definition." + }, + "failedJobs": { + "type": "integer", + "format": "int32", + "description": "The total number of failed jobs for the running instances.\n**Note**: Will be `0` (not `null`), if failed jobs were excluded." + }, + "incidents": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/IncidentStatisticsResultDto" + }, + "description": "Each item in the resulting array is an object which contains `incidentType` and `incidentCount`.\n**Note**: Will be an empty array, if `incidents` or `incidentsForType` were excluded.\nFurthermore, the array will be also empty if no incidents were found." + }, + "definition": { + "$ref": "#/components/schemas/ProcessDefinitionDto" + } + } + }, + "ProcessDefinitionSuspensionStateDto": { + "type": "object", + "properties": { + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A `Boolean` value which indicates whether to activate or suspend all process definitions with the given key.\nWhen the value is set to `true`, all process definitions with the given key will be suspended and\nwhen the value is set to `false`, all process definitions with the given key will be activated." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definitions to activate or suspend." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The key of the process definitions to activate or suspend." + }, + "includeProcessInstances": { + "type": "boolean", + "nullable": true, + "description": "A `Boolean` value which indicates whether to activate or suspend also all process instances of \nthe process definitions with the given key.\nWhen the value is set to `true`, all process instances of the process definitions with the given key\nwill be activated or suspended and when the value is set to `false`, the suspension state of \nall process instances of the process definitions with the given key will not be updated." + }, + "executionDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date on which all process definitions with the given key will be activated or suspended.\nIf `null`, the suspension state of all process definitions with the given key is updated immediately.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/),\nthe date must have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.000+0200`." + } + } + }, + "ProcessEngineDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true, + "description": "The name of the process engine." + } + } + }, + "ProcessInstanceDto": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the process instance." + }, + "definitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition that this process instance belongs to." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key of the process instance." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the case instance associated with the process instance." + }, + "ended": { + "type": "boolean", + "nullable": true, + "deprecated": true, + "description": "A flag indicating whether the process instance has ended or not. Deprecated: will always be false!" + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A flag indicating whether the process instance is suspended or not." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The tenant id of the process instance." + } + } + }, + { + "$ref": "#/components/schemas/LinkableDto" + } + ] + }, + "ProcessInstanceModificationDto": { + "type": "object", + "properties": { + "skipCustomListeners": { + "type": "boolean", + "nullable": true, + "description": "Skip execution listener invocation for activities that are started or ended as part of this request." + }, + "skipIoMappings": { + "type": "boolean", + "nullable": true, + "description": "Skip execution of [input/output variable mappings](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/#input-output-variable-mapping)\nfor activities that are started or ended as part of this request." + }, + "instructions": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProcessInstanceModificationInstructionDto" + }, + "description": "JSON array of modification instructions. The instructions are executed in the order they are in." + }, + "annotation": { + "type": "string", + "nullable": true, + "description": "An arbitrary text annotation set by a user for auditing reasons." + } + } + }, + "ProcessInstanceModificationInstructionDto": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "cancel", + "startBeforeActivity", + "startAfterActivity", + "startTransition" + ], + "description": "**Mandatory**. One of the following values: `cancel`, `startBeforeActivity`, `startAfterActivity`, `startTransition`.\n\n* A cancel instruction requests cancellation of a single activity instance or all instances of one activity.\n* A startBeforeActivity instruction requests to enter a given activity.\n* A startAfterActivity instruction requests to execute the single outgoing sequence flow of a given activity.\n* A startTransition instruction requests to execute a specific sequence flow." + }, + "variables": { + "$ref": "#/components/schemas/TriggerVariableValueDto" + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "Can be used with instructions of types `startTransition`. Specifies the sequence flow to start." + }, + "transitionId": { + "type": "string", + "nullable": true, + "description": "Can be used with instructions of types `startTransition`. Specifies the sequence flow to start." + }, + "activityInstanceId": { + "type": "string", + "nullable": true, + "description": "Can be used with instructions of type `cancel`. Specifies the activity instance to cancel.\nValid values are the activity instance IDs supplied by the [Get Activity Instance request](https://docs.camunda.org/manual/7.15/reference/rest/process-instance/get-activity-instances/)." + }, + "transitionInstanceId": { + "type": "string", + "nullable": true, + "description": "Can be used with instructions of type `cancel`. Specifies the transition instance to cancel.\nValid values are the transition instance IDs supplied by the [Get Activity Instance request](https://docs.camunda.org/manual/7.15/reference/rest/process-instance/get-activity-instances/)." + }, + "ancestorActivityInstanceId": { + "type": "string", + "nullable": true, + "description": "Can be used with instructions of type `startBeforeActivity`, `startAfterActivity`, and `startTransition`.\nValid values are the activity instance IDs supplied by the Get Activity Instance request.\nIf there are multiple parent activity instances of the targeted activity,\nthis specifies the ancestor scope in which hierarchy the activity/transition is to be instantiated.\n\nExample: When there are two instances of a subprocess and an activity contained in the subprocess is to be started,\nthis parameter allows to specifiy under which subprocess instance the activity should be started." + }, + "cancelCurrentActiveActivityInstances": { + "type": "boolean", + "nullable": true, + "description": "Can be used with instructions of type cancel. Prevents the deletion of new created activity instances." + } + } + }, + "ProcessInstanceQueryDto": { + "type": "object", + "description": "A process instance query which defines a group of process instances", + "properties": { + "deploymentId": { + "type": "string", + "nullable": true, + "description": "Filter by the deployment the id belongs to." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Filter by the process definition the instances run on." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Filter by the key of the process definition the instances run on." + }, + "processDefinitionKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of process definition keys.\nA process instance must have one of the given process definition keys. Must be a JSON array of Strings." + }, + "processDefinitionKeyNotIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Exclude instances by a list of process definition keys.\nA process instance must not have one of the given process definition keys. Must be a JSON array of Strings." + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "Filter by process instance business key." + }, + "businessKeyLike": { + "type": "string", + "nullable": true, + "description": "Filter by process instance business key that the parameter is a substring of." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "Filter by case instance id." + }, + "superProcessInstance": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that are sub process instances of the given process instance.\nTakes a process instance id." + }, + "subProcessInstance": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that have the given process instance as a sub process instance.\nTakes a process instance id." + }, + "superCaseInstance": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that are sub process instances of the given case instance.\nTakes a case instance id." + }, + "subCaseInstance": { + "type": "string", + "nullable": true, + "description": "Restrict query to all process instances that have the given case instance as a sub case instance.\nTakes a case instance id." + }, + "active": { + "type": "boolean", + "nullable": true, + "description": "Only include active process instances. Value may only be true, as false is the default behavior." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Only include suspended process instances. Value may only be true, as false is the default behavior." + }, + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of process instance ids. Must be a JSON array of Strings." + }, + "withIncident": { + "type": "boolean", + "nullable": true, + "description": "Filter by presence of incidents. Selects only process instances that have an incident." + }, + "incidentId": { + "type": "string", + "nullable": true, + "description": "Filter by the incident id." + }, + "incidentType": { + "type": "string", + "nullable": true, + "description": "Filter by the incident type. See the User Guide for a list of incident types." + }, + "incidentMessage": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message. Exact match." + }, + "incidentMessageLike": { + "type": "string", + "nullable": true, + "description": "Filter by the incident message that the parameter is a substring of." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of tenant ids. A process instance must have one of the given tenant ids.\nMust be a JSON array of Strings." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only include process instances which belong to no tenant.\nValue may only be true, as false is the default behavior." + }, + "processDefinitionWithoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only include process instances which process definition has no tenant id." + }, + "activityIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Filter by a list of activity ids.\nA process instance must currently wait in a leaf activity with one of the given activity ids." + }, + "rootProcessInstances": { + "type": "boolean", + "nullable": true, + "description": "Restrict the query to all process instances that are top level process instances." + }, + "leafProcessInstances": { + "type": "boolean", + "nullable": true, + "description": "Restrict the query to all process instances that are leaf instances. (i.e. don\u0027t have any sub instances)" + }, + "variables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "A JSON array to only include process instances that have variables with certain values.\nThe array consists of objects with the three properties `name`, `operator` and `value`.\n`name` (String) is the variable name,\n`operator` (String) is the comparison operator to be used and `value` the variable value.\nThe `value` may be String, Number or Boolean.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than;\n`gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`." + }, + "variableNamesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable names in this query case-insensitively.\nIf set to true variableName and variablename are treated as equal." + }, + "variableValuesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable values in this query case-insensitively.\nIf set to true variableValue and variablevalue are treated as equal." + }, + "orQueries": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "description": "A JSON array of nested process instance queries with OR semantics.\nA process instance matches a nested query if it fulfills at least one of the query\u0027s predicates.\nWith multiple nested queries, a process instance must fulfill at least one predicate of each query (Conjunctive Normal Form).\nAll process instance query properties can be used except for: `sorting`\nSee the [User guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-engine-api/#or-queries) for more information about OR queries." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "instanceId", + "definitionId", + "definitionKey", + "businessKey", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "ProcessInstanceSuspensionStateAsyncDto": { + "allOf": [ + { + "type": "object", + "properties": { + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of process instance ids which defines a group of process instances\nwhich will be activated or suspended by the operation." + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + } + } + }, + { + "$ref": "#/components/schemas/SuspensionStateDto" + } + ] + }, + "ProcessInstanceSuspensionStateDto": { + "allOf": [ + { + "type": "object", + "properties": { + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The process definition id of the process instances to activate or suspend.\n\n**Note**: This parameter can be used only with combination of `suspended`." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The process definition key of the process instances to activate or suspend.\n\n**Note**: This parameter can be used only with combination of `suspended`, `processDefinitionTenantId`, and `processDefinitionWithoutTenantId`." + }, + "processDefinitionTenantId": { + "type": "string", + "nullable": true, + "description": "Only activate or suspend process instances of a process definition which belongs to a tenant with the given id.\n\n**Note**: This parameter can be used only with combination of `suspended`, `processDefinitionKey`, and `processDefinitionWithoutTenantId`." + }, + "processDefinitionWithoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "Only activate or suspend process instances of a process definition which belongs to no tenant.\nValue may only be true, as false is the default behavior.\n\n**Note**: This parameter can be used only with combination of `suspended`, `processDefinitionKey`, and `processDefinitionTenantId`." + }, + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of process instance ids which defines a group of process instances\nwhich will be activated or suspended by the operation.\n\n**Note**: This parameter can be used only with combination of `suspended`, `processInstanceQuery`, and `historicProcessInstanceQuery`." + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + } + } + }, + { + "$ref": "#/components/schemas/SuspensionStateDto" + } + ] + }, + "ProcessInstanceWithVariablesDto": { + "allOf": [ + { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "The id of the process instance." + } + } + }, + { + "$ref": "#/components/schemas/ProcessInstanceDto" + } + ] + }, + "RedeploymentDto": { + "title": "RedeploymentDto", + "type": "object", + "description": "A JSON object with the following properties:", + "properties": { + "resourceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of deployment resource ids to re-deploy." + }, + "resourceNames": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of deployment resource names to re-deploy." + }, + "source": { + "type": "string", + "nullable": true, + "description": "Sets the source of the deployment." + } + } + }, + "ResourceOptionsDto": { + "allOf": [ + { + "type": "object", + "properties": {} + }, + { + "$ref": "#/components/schemas/LinkableDto" + } + ] + }, + "ResourceReportDto": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProblemDto" + }, + "description": "A list of errors occurred during parsing." + }, + "warnings": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProblemDto" + }, + "description": "A list of warnings occurred during parsing." + } + } + }, + "RestartProcessInstanceDto": { + "type": "object", + "properties": { + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of process instance ids to restart." + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "skipCustomListeners": { + "type": "boolean", + "nullable": true, + "description": "Skip execution listener invocation for activities that are started as part of this request." + }, + "skipIoMappings": { + "type": "boolean", + "nullable": true, + "description": "Skip execution of\n[input/output variable mappings](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/#input-output-variable-mapping)\nfor activities that are started as part of this request." + }, + "initialVariables": { + "type": "boolean", + "nullable": true, + "description": "Set the initial set of variables during restart. By default, the last set of variables is used." + }, + "withoutBusinessKey": { + "type": "boolean", + "nullable": true, + "description": "Do not take over the business key of the historic process instance." + }, + "instructions": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/RestartProcessInstanceModificationInstructionDto" + }, + "description": "**Optional**. A JSON array of instructions that specify which activities to start the process instance at.\nIf this property is omitted, the process instance starts at its default blank start event." + } + } + }, + "RestartProcessInstanceModificationInstructionDto": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "startBeforeActivity", + "startAfterActivity", + "startTransition" + ], + "description": "**Mandatory**. One of the following values: `startBeforeActivity`, `startAfterActivity`, `startTransition`.\n\n* A `startBeforeActivity` instruction requests to enter a given activity.\n* A `startAfterActivity` instruction requests to execute the single outgoing sequence flow of a given activity.\n* A `startTransition` instruction requests to execute a specific sequence flow." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "**Can be used with instructions of types** `startBeforeActivity`\nand `startAfterActivity`. Specifies the sequence flow to start." + }, + "transitionId": { + "type": "string", + "nullable": true, + "description": "**Can be used with instructions of types** `startTransition`.\nSpecifies the sequence flow to start." + } + } + }, + "RetriesDto": { + "type": "object", + "properties": { + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of retries to set for the resource. Must be \u003e\u003d 0. If this is 0, an incident is created\nand the task, or job, cannot be fetched, or acquired anymore unless the retries are increased again.\nCan not be null." + } + } + }, + "SchemaLogEntryDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the schema log entry." + }, + "timestamp": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date and time of the schema update." + }, + "version": { + "type": "string", + "nullable": true, + "description": "The version of the schema." + } + } + }, + "SchemaLogQueryDto": { + "type": "object", + "properties": { + "version": { + "type": "string", + "nullable": true, + "description": "The version of the schema." + }, + "sorting": { + "type": "array", + "description": "A JSON array of criteria to sort the result by. Each element of the array is\n a JSON object that specifies one ordering. The position in the array\n identifies the rank of an ordering, i.e., whether it is primary, secondary,\n etc. ", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "timestamp" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "SetJobRetriesByProcessDto": { + "type": "object", + "properties": { + "processInstances": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of process instance ids to fetch jobs, for which retries will be set." + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "An integer representing the number of retries. Please note that the value cannot be negative or null." + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + } + } + }, + "SetJobRetriesDto": { + "type": "object", + "description": "Defines the number of retries for a selection of jobs.\nPlease note that if both jobIds and jobQuery are provided,\nthen retries will be set on the union of these sets.", + "properties": { + "jobIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of job ids to set retries for." + }, + "jobQuery": { + "$ref": "#/components/schemas/JobQueryDto" + }, + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0, + "description": "An integer representing the number of retries. Please note that the value cannot be\nnegative or null." + } + } + }, + "SetRemovalTimeToHistoricProcessInstancesDto": { + "allOf": [ + { + "type": "object", + "properties": { + "historicProcessInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "The id of the process instance." + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "hierarchical": { + "type": "boolean", + "nullable": true, + "description": "Sets the removal time to all historic process instances in the hierarchy.\nValue may only be `true`, as `false` is the default behavior." + } + } + }, + { + "$ref": "#/components/schemas/AbstractSetRemovalTimeDto" + } + ] + }, + "SetRetriesForExternalTasksDto": { + "type": "object", + "properties": { + "retries": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The number of retries to set for the external task. Must be \u003e\u003d 0. If this is 0, an incident is created\nand the task cannot be fetched anymore unless the retries are increased again. Can not be null." + }, + "externalTaskIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "The ids of the external tasks to set the number of retries for." + }, + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "The ids of process instances containing the tasks to set the number of retries for." + }, + "externalTaskQuery": { + "$ref": "#/components/schemas/ExternalTaskQueryDto" + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + } + } + }, + "SetVariablesAsyncDto": { + "type": "object", + "properties": { + "processInstanceIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of process instance ids that define a group of process instances\nto which the operation will set variables.\n\nPlease note that if `processInstanceIds`, `processInstanceQuery` and `historicProcessInstanceQuery`\nare defined, the resulting operation will be performed on the union of these sets." + }, + "processInstanceQuery": { + "$ref": "#/components/schemas/ProcessInstanceQueryDto" + }, + "historicProcessInstanceQuery": { + "$ref": "#/components/schemas/HistoricProcessInstanceQueryDto" + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A variables the operation will set in the root scope of the process instances." + } + } + }, + "SignalDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the signal to deliver.\n\n**Note**: This property is mandatory." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "Optionally specifies a single execution which is notified by the signal.\n\n**Note**: If no execution id is defined the signal is broadcasted to all subscribed\nhandlers. " + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs. Each key is a variable name and\neach value a JSON variable value object." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "Specifies a tenant to deliver the signal. The signal can only be received on\nexecutions or process definitions which belongs to the given tenant.\n\n**Note**: Cannot be used in combination with executionId." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "description": "If true the signal can only be received on executions or process definitions which\nbelongs to no tenant. Value may not be false as this is the default behavior.\n\n**Note**: Cannot be used in combination with `executionId`." + } + } + }, + "SortTaskQueryParametersDto": { + "type": "object", + "description": "Mandatory when `sortBy` is one of the following values: `processVariable`, `executionVariable`,\n`taskVariable`, `caseExecutionVariable` or `caseInstanceVariable`. Must be a JSON object with the properties\n`variable` and `type` where `variable` is a variable name and `type` is the name of a variable value type.", + "properties": { + "variable": { + "type": "string", + "nullable": true, + "description": "The name of the variable to sort by." + }, + "type": { + "type": "string", + "nullable": true, + "description": "The name of the type of the variable value." + } + } + }, + "StartProcessInstanceDto": { + "type": "object", + "properties": { + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key of the process instance." + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "" + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "The case instance id the process instance is to be initialized with." + }, + "startInstructions": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProcessInstanceModificationInstructionDto" + }, + "description": "**Optional**. A JSON array of instructions that specify which activities to start the process instance at.\nIf this property is omitted, the process instance starts at its default blank start event." + }, + "skipCustomListeners": { + "type": "boolean", + "nullable": true, + "description": "Skip execution listener invocation for activities that are started or ended as part of this request.\n**Note**: This option is currently only respected when start instructions are submitted\nvia the `startInstructions` property." + }, + "skipIoMappings": { + "type": "boolean", + "nullable": true, + "description": "Skip execution of\n[input/output variable mappings](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables/#input-output-variable-mapping)\nfor activities that are started or ended as part of this request.\n**Note**: This option is currently only respected when start instructions are submitted\nvia the `startInstructions` property." + }, + "withVariablesInReturn": { + "type": "boolean", + "nullable": true, + "description": "Indicates if the variables, which was used by the process instance during execution, should be returned.\nDefault value: `false`" + } + } + }, + "StartProcessInstanceFormDto": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "" + }, + "businessKey": { + "type": "string", + "nullable": true, + "description": "The business key the process instance is to be initialized with.\nThe business key uniquely identifies the process instance in the context of the given process definition." + } + } + }, + "SuspensionStateDto": { + "type": "object", + "properties": { + "suspended": { + "type": "boolean", + "nullable": true, + "description": "A Boolean value which indicates whether to activate or suspend a given instance (e.g. process instance, job, or batch).\nWhen the value is set to true, the given instance will be suspended and when the value is set to false,\nthe given instance will be activated." + } + } + }, + "TaskBpmnErrorDto": { + "type": "object", + "properties": { + "errorCode": { + "type": "string", + "nullable": true, + "description": "An error code that indicates the predefined error. It is used to identify the BPMN\nerror handler." + }, + "errorMessage": { + "type": "string", + "nullable": true, + "description": "An error message that describes the error." + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs." + } + } + }, + "TaskDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The task id." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The task name." + }, + "assignee": { + "type": "string", + "nullable": true, + "description": "The assignee\u0027s id." + }, + "owner": { + "type": "string", + "nullable": true, + "description": "The owner\u0027s id." + }, + "created": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The date the task was created on.\n[Default format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "due": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The task\u0027s due date.\n[Default format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "followUp": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The follow-up date for the task.\n[Default format](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/)\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`." + }, + "delegationState": { + "type": "string", + "nullable": true, + "enum": [ + "PENDING", + "RESOLVED" + ], + "description": "The task\u0027s delegation state. Possible values are `PENDING` and `RESOLVED`." + }, + "description": { + "type": "string", + "nullable": true, + "description": "The task\u0027s description." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution the task belongs to." + }, + "parentTaskId": { + "type": "string", + "nullable": true, + "description": "The id the parent task, if this task is a subtask." + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "The task\u0027s priority." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition the task belongs to." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance the task belongs to." + }, + "caseExecutionId": { + "type": "string", + "nullable": true, + "description": "The id of the case execution the task belongs to." + }, + "caseDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the case definition the task belongs to." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the case instance the task belongs to." + }, + "taskDefinitionKey": { + "type": "string", + "nullable": true, + "description": "The task\u0027s key." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "description": "Whether the task belongs to a process instance that is suspended." + }, + "formKey": { + "type": "string", + "nullable": true, + "description": "If not `null`, the form key for the task." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "If not `null`, the tenant id of the task." + } + } + }, + "TaskEscalationDto": { + "type": "object", + "properties": { + "escalationCode": { + "type": "string", + "nullable": true, + "description": "An escalation code that indicates the predefined escalation. It is used to identify\nthe BPMN escalation handler." + }, + "variables": { + "type": "object", + "nullable": true, + "additionalProperties": { + "$ref": "#/components/schemas/VariableValueDto" + }, + "description": "A JSON object containing variable key-value pairs." + } + } + }, + "TaskQueryDto": { + "type": "object", + "description": "A Task query which defines a group of Tasks.", + "properties": { + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to process instances with the given id." + }, + "processInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with the given ids." + }, + "processInstanceBusinessKey": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to process instances with the given business key." + }, + "processInstanceBusinessKeyExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to process instances with the given business key which \nis described by an expression. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + "processInstanceBusinessKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to tasks that belong to process instances with one of the give business keys. \nThe keys need to be in a comma-separated list." + }, + "processInstanceBusinessKeyLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring." + }, + "processInstanceBusinessKeyLikeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a process instance business key that has the parameter \nvalue as a substring and is described by an expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a process definition with the given id." + }, + "processDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a process definition with the given key." + }, + "processDefinitionKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to tasks that belong to a process definition with one of the given keys. The \nkeys need to be in a comma-separated list." + }, + "processDefinitionName": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a process definition with the given name." + }, + "processDefinitionNameLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a process definition name that has the parameter value as \na substring." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to an execution with the given id." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to case instances with the given id." + }, + "caseInstanceBusinessKey": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to case instances with the given business key." + }, + "caseInstanceBusinessKeyLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a case instance business key that has the parameter value \nas a substring." + }, + "caseDefinitionId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a case definition with the given id." + }, + "caseDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a case definition with the given key." + }, + "caseDefinitionName": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a case definition with the given name." + }, + "caseDefinitionNameLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a case definition name that has the parameter value as a \nsubstring." + }, + "caseExecutionId": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that belong to a case execution with the given id." + }, + "activityInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated activity \ninstance ids." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include tasks which belong to one of the passed and comma-separated \ntenant ids." + }, + "withoutTenantId": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which belong to no tenant. Value may only be `true`, \nas `false` is the default behavior." + }, + "assignee": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that the given user is assigned to." + }, + "assigneeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that the user described by the given expression is assigned to. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "assigneeLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have an assignee that has the parameter \nvalue as a substring." + }, + "assigneeLikeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have an assignee that has the parameter value described by the \ngiven expression as a substring. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "assigneeIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include tasks which are assigned to one of the passed and comma-separated user ids." + }, + "owner": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that the given user owns." + }, + "ownerExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that the user described by the given expression owns. See the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "candidateGroup": { + "type": "string", + "nullable": true, + "description": "Only include tasks that are offered to the given group." + }, + "candidateGroupExpression": { + "type": "string", + "nullable": true, + "description": "Only include tasks that are offered to the group described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "candidateUser": { + "type": "string", + "nullable": true, + "description": "Only include tasks that are offered to the given user or to one of his groups." + }, + "candidateUserExpression": { + "type": "string", + "nullable": true, + "description": "Only include tasks that are offered to the user described by the given expression. \nSee the \n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions) \nfor more information on available functions." + }, + "includeAssignedTasks": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Also include tasks that are assigned to users in candidate queries. Default is to only \ninclude tasks that are not assigned to any user if you query by candidate user or\ngroup(s)." + }, + "involvedUser": { + "type": "string", + "nullable": true, + "description": "Only include tasks that the given user is involved in. A user is involved in a task if \nan identity link exists between task and user (e.g., the user is the assignee)." + }, + "involvedUserExpression": { + "type": "string", + "nullable": true, + "description": "Only include tasks that the user described by the given expression is involved in.\nA user is involved in a task if an identity link exists between task and user\n(e.g., the user is the assignee). See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions." + }, + "assigned": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "If set to `true`, restricts the query to all tasks that are assigned." + }, + "unassigned": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "If set to `true`, restricts the query to all tasks that are unassigned." + }, + "taskDefinitionKey": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have the given key." + }, + "taskDefinitionKeyIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to tasks that have one of the given keys. The keys need to be in a comma-separated list." + }, + "taskDefinitionKeyLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a key that has the parameter value as a substring." + }, + "name": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have the given name." + }, + "nameNotEqual": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that do not have the given name." + }, + "nameLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a name with the given parameter value as substring." + }, + "nameNotLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that do not have a name with the given parameter\nvalue as substring." + }, + "description": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have the given description." + }, + "descriptionLike": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a description that has the parameter\nvalue as a substring." + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Restrict to tasks that have the given priority." + }, + "maxPriority": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Restrict to tasks that have a lower or equal priority." + }, + "minPriority": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Restrict to tasks that have a higher or equal priority." + }, + "dueDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that are due on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have the format\n`yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.546+0200`." + }, + "dueDateExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that are due on the date described by the given expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "dueAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that are due after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.435+0200`." + }, + "dueAfterExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that are due after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "dueBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that are due before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.243+0200`." + }, + "dueBeforeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that are due before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "withoutDueDate": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which have no due date. Value may only be `true`, \nas `false` is the default behavior." + }, + "followUpDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that have a followUp date on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date\nmust have the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`." + }, + "followUpDateExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a followUp date on the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "followUpAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that have a followUp date after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.542+0200`." + }, + "followUpAfterExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a followUp date after the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "followUpBefore": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a followUp date before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.234+0200`." + }, + "followUpBeforeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have a followUp date before the date described by the given\nexpression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "followUpBeforeOrNotExistent": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that have no followUp date or a followUp date before the given date.\nBy [default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.432+0200`. The typical use case\nis to query all `active` tasks for a user for a given date." + }, + "followUpBeforeOrNotExistentExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that have no followUp date or a followUp date before the date\ndescribed by the given expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "createdOn": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that were created on the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must have\nthe format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.324+0200`." + }, + "createdOnExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that were created on the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "createdAfter": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that were created after the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must\nhave the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`." + }, + "createdAfterExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that were created after the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "createdBefore": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Restrict to tasks that were created before the given date. By\n[default](https://docs.camunda.org/manual/7.15/reference/rest/overview/date-format/), the date must\nhave the format `yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.332+0200`." + }, + "createdBeforeExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that were created before the date described by the given expression.\nSee the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to a\n`java.util.Date` or `org.joda.time.DateTime` object." + }, + "delegationState": { + "type": "string", + "nullable": true, + "enum": [ + "PENDING", + "RESOLVED" + ], + "description": "Restrict to tasks that are in the given delegation state. Valid values are\n`PENDING` and `RESOLVED`." + }, + "candidateGroups": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Restrict to tasks that are offered to any of the given candidate groups. Takes a\ncomma-separated list of group names, so for example\n`developers,support,sales`." + }, + "candidateGroupsExpression": { + "type": "string", + "nullable": true, + "description": "Restrict to tasks that are offered to any of the candidate groups described by the\ngiven expression. See the\n[user guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/expression-language/#internal-context-functions)\nfor more information on available functions. The expression must evaluate to\n`java.util.List` of Strings." + }, + "withCandidateGroups": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which have a candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + "withoutCandidateGroups": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which have no candidate group. Value may only be `true`,\nas `false` is the default behavior." + }, + "withCandidateUsers": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which have a candidate user. Value may only be `true`,\nas `false` is the default behavior." + }, + "withoutCandidateUsers": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include tasks which have no candidate users. Value may only be `true`,\nas `false` is the default behavior." + }, + "active": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include active tasks. Value may only be `true`, as `false`\nis the default behavior." + }, + "suspended": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Only include suspended tasks. Value may only be `true`, as\n`false` is the default behavior." + }, + "taskVariables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "A JSON array to only include tasks that have variables with certain values. The\narray consists of JSON objects with three properties `name`, `operator` and `value`.\n`name` is the variable name, `operator` is the comparison operator to be used and\n`value` the variable value. `value` may be of type `String`, `Number` or `Boolean`.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + "processVariables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "A JSON array to only include tasks that belong to a process instance with variables\nwith certain values. The array consists of JSON objects with three properties\n`name`, `operator` and `value`. `name` is the variable name, `operator` is the\ncomparison operator to be used and `value` the variable value. `value` may be of\ntype `String`, `Number` or `Boolean`.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`;\n`notLike`.\n`key` and `value` may not contain underscore or comma characters." + }, + "caseInstanceVariables": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "A JSON array to only include tasks that belong to a case instance with variables\nwith certain values. The array consists of JSON objects with three properties\n`name`, `operator` and `value`. `name` is the variable name, `operator` is the\ncomparison operator to be used and `value` the variable value. `value` may be of\ntype `String`, `Number` or `Boolean`.\n\nValid `operator` values are:\n`eq` - equal to;\n`neq` - not equal to;\n`gt` - greater than;\n`gteq` - greater than or equal to;\n`lt` - lower than;\n`lteq` - lower than or equal to;\n`like`.\n`key` and `value` may not contain underscore or comma characters." + }, + "variableNamesIgnoreCase": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Match all variable names in this query case-insensitively. If set\n`variableName` and `variablename` are treated as equal." + }, + "variableValuesIgnoreCase": { + "type": "boolean", + "nullable": true, + "default": false, + "description": "Match all variable values in this query case-insensitively. If set\n`variableValue` and `variablevalue` are treated as equal." + }, + "parentTaskId": { + "type": "string", + "nullable": true, + "description": "Restrict query to all tasks that are sub tasks of the given task. Takes a task id." + }, + "orQueries": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/TaskQueryDto" + }, + "description": "A JSON array of nested task queries with OR semantics. A task matches a nested query if it fulfills\n*at least one* of the query\u0027s predicates. With multiple nested queries, a task must fulfill at least one predicate of *each* query ([Conjunctive Normal Form](https://en.wikipedia.org/wiki/Conjunctive_normal_form)).\n\nAll task query properties can be used except for: `sorting`, `withCandidateGroups`,\n`withoutCandidateGroups`, `withCandidateUsers`, `withoutCandidateUsers`\n\nSee the [User guide](https://docs.camunda.org/manual/7.15/user-guide/process-engine/process-engine-api/#or-queries)\nfor more information about OR queries." + }, + "sorting": { + "type": "array", + "description": "Apply sorting of the result", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "instanceId", + "caseInstanceId", + "dueDate", + "executionId", + "caseExecutionId", + "assignee", + "created", + "description", + "id", + "name", + "nameCaseInsensitive", + "priority", + "processVariable", + "executionVariable", + "taskVariable", + "caseExecutionVariable", + "caseInstanceVariable" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + }, + "parameters": { + "$ref": "#/components/schemas/SortTaskQueryParametersDto" + } + } + } + } + } + }, + "TelemetryConfigurationDto": { + "type": "object", + "properties": { + "enableTelemetry": { + "type": "boolean", + "nullable": true, + "description": "Specifies if the telemetry data should be sent or not." + } + } + }, + "TenantDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the tenant." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the tenant." + } + } + }, + "TransitionInstanceDto": { + "type": "object", + "description": "A JSON object corresponding to the Activity Instance tree of the given process instance.", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the transition instance." + }, + "parentActivityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the parent activity instance, for example a sub process instance." + }, + "activityId": { + "type": "string", + "nullable": true, + "description": "The id of the activity that this instance enters (asyncBefore job) or leaves (asyncAfter job)" + }, + "activityName": { + "type": "string", + "nullable": true, + "description": "The name of the activity that this instance enters (asyncBefore job) or leaves (asyncAfter job)" + }, + "activityType": { + "type": "string", + "nullable": true, + "description": "The type of the activity that this instance enters (asyncBefore job) or leaves (asyncAfter job)" + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance this instance is part of." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The execution id." + }, + "incidentIds": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "A list of incident ids." + }, + "incidents": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ActivityInstanceIncidentDto" + }, + "description": "A list of JSON objects containing incident specific properties:\n* `id`: the id of the incident\n* `activityId`: the activity id in which the incident occurred" + } + } + }, + "TriggerVariableValueDto": { + "allOf": [ + { + "type": "object", + "properties": { + "local": { + "type": "boolean", + "nullable": true, + "description": "Indicates whether the variable should be a local variable or not.\nIf set to true, the variable becomes a local variable of the execution\nentering the target activity." + } + } + }, + { + "$ref": "#/components/schemas/VariableValueDto" + } + ] + }, + "UserCredentialsDto": { + "type": "object", + "properties": { + "password": { + "type": "string", + "nullable": true, + "description": "The users new password." + }, + "authenticatedUserPassword": { + "type": "string", + "nullable": true, + "description": "The password of the authenticated user who changes the password of the user\n(i.e., the user with passed id as path parameter)." + } + } + }, + "UserDto": { + "type": "object", + "properties": { + "profile": { + "$ref": "#/components/schemas/UserProfileDto" + }, + "credentials": { + "$ref": "#/components/schemas/UserCredentialsDto" + } + } + }, + "UserIdDto": { + "type": "object", + "properties": { + "userId": { + "type": "string", + "nullable": true, + "description": "The id of the user that the current action refers to." + } + } + }, + "UserProfileDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the user." + }, + "firstName": { + "type": "string", + "nullable": true, + "description": "The first name of the user." + }, + "lastName": { + "type": "string", + "nullable": true, + "description": "The first name of the user." + }, + "email": { + "type": "string", + "nullable": true, + "description": "The email of the user." + } + } + }, + "VariableInstanceDto": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true, + "description": "The id of the variable instance." + }, + "name": { + "type": "string", + "nullable": true, + "description": "The name of the variable instance." + }, + "processDefinitionId": { + "type": "string", + "nullable": true, + "description": "The id of the process definition that this variable instance belongs to." + }, + "processInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the process instance that this variable instance belongs to." + }, + "executionId": { + "type": "string", + "nullable": true, + "description": "The id of the execution that this variable instance belongs to." + }, + "caseInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the case instance that this variable instance belongs to." + }, + "caseExecutionId": { + "type": "string", + "nullable": true, + "description": "The id of the case execution that this variable instance belongs to." + }, + "taskId": { + "type": "string", + "nullable": true, + "description": "The id of the task that this variable instance belongs to." + }, + "batchId": { + "type": "string", + "nullable": true, + "description": "The id of the batch that this variable instance belongs to.\u003c" + }, + "activityInstanceId": { + "type": "string", + "nullable": true, + "description": "The id of the activity instance that this variable instance belongs to." + }, + "tenantId": { + "type": "string", + "nullable": true, + "description": "The id of the tenant that this variable instance belongs to." + }, + "errorMessage": { + "type": "string", + "nullable": true, + "description": "An error message in case a Java Serialized Object could not be de-serialized." + } + } + }, + { + "$ref": "#/components/schemas/VariableValueDto" + } + ] + }, + "VariableInstanceQueryDto": { + "type": "object", + "description": "A variable instance query which defines a list of variable instances", + "properties": { + "variableName": { + "type": "string", + "nullable": true, + "description": "Filter by variable instance name." + }, + "variableNameLike": { + "type": "string", + "nullable": true, + "description": "Filter by the variable instance name. The parameter can include the wildcard `%` to\nexpress like-strategy such as: starts with (`%`name), ends with (name`%`) or\ncontains (`%`name`%`)." + }, + "processInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed \nprocess instance ids." + }, + "executionIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed \nexecution ids." + }, + "caseInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed case instance ids." + }, + "caseExecutionIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed case execution ids." + }, + "taskIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed task\nids." + }, + "batchIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed \nbatch ids." + }, + "activityInstanceIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed \nactivity instance ids." + }, + "tenantIdIn": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Only include variable instances which belong to one of the passed \ntenant ids." + }, + "variableValues": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariableQueryParameterDto" + }, + "description": "An array to only include variable instances that have the certain values.\nThe array consists of objects with the three properties `name`, `operator` and `value`. `name (String)` is the\nvariable name, `operator (String)` is the comparison operator to be used and `value` the variable value.\n`value` may be `String`, `Number` or `Boolean`.\n\nValid operator values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater\nthan or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`" + }, + "variableNamesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable names provided in `variableValues` case-insensitively. If set to `true`\n**variableName** and **variablename** are treated as equal." + }, + "variableValuesIgnoreCase": { + "type": "boolean", + "nullable": true, + "description": "Match all variable values provided in `variableValues` case-insensitively. If set to\n`true` **variableValue** and **variablevalue** are treated as equal." + }, + "sorting": { + "type": "array", + "description": "An array of criteria to sort the result by. Each element of the array is an object that specifies one ordering.\n The position in the array identifies the rank of an ordering, i.e., whether it is primary, secondary, etc.\n Sorting has no effect for `count` endpoints", + "items": { + "type": "object", + "properties": { + "sortBy": { + "type": "string", + "nullable": true, + "enum": [ + "variableName", + "variableType", + "activityInstanceId", + "tenantId" + ], + "description": "Sort the results lexicographically by a given criterion.\nMust be used in conjunction with the sortOrder parameter." + }, + "sortOrder": { + "type": "string", + "nullable": true, + "enum": [ + "asc", + "desc" + ], + "description": "Sort the results in a given order. Values may be `asc` for ascending order or `desc` for\ndescending order. Must be used in conjunction with the sortBy parameter." + } + } + } + } + } + }, + "VariableQueryParameterDto": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true, + "description": "Variable name" + } + } + }, + { + "$ref": "#/components/schemas/ConditionQueryParameterDto" + } + ] + }, + "VariableValueDto": { + "type": "object", + "properties": { + "value": { + "type": "object", + "description": "The variable\u0027s value. Value differs depending on the variable\u0027s type and on the deserializeValues parameter." + }, + "type": { + "type": "string", + "nullable": true, + "description": "The value type of the variable." + }, + "valueInfo": { + "type": "object", + "additionalProperties": true, + "description": "A JSON object containing additional, value-type-dependent properties.\nFor serialized variables of type Object, the following properties can be provided:\n\n* `objectTypeName`: A string representation of the object\u0027s type name.\n* `serializationDataFormat`: The serialization format used to store the variable.\n\nFor serialized variables of type File, the following properties can be provided:\n\n* `filename`: The name of the file. This is not the variable name but the name that will be used when downloading the file again.\n* `mimetype`: The MIME type of the file that is being uploaded.\n* `encoding`: The encoding of the file that is being uploaded.\n\nThe following property can be provided for all value types:\n\n* `transient`: Indicates whether the variable should be transient or\nnot. See [documentation](https://docs.camunda.org/manual/7.15/user-guide/process-engine/variables#transient-variables) for more informations.\n(Not applicable for `decision-definition` and ` /process-instance/variables-async` endpoints)" + } + } + }, + "VersionDto": { + "type": "object", + "properties": { + "version": { + "type": "string", + "nullable": true, + "description": "The version of the Rest API." + } + } + } + } + } +} \ No newline at end of file diff --git a/services/eurynome-cloud-bpmn-ability/src/main/resources/bootstrap.yml b/services/eurynome-cloud-bpmn-ability/src/main/resources/bootstrap.yml index 0176a73fb..a8cc2edc1 100644 --- a/services/eurynome-cloud-bpmn-ability/src/main/resources/bootstrap.yml +++ b/services/eurynome-cloud-bpmn-ability/src/main/resources/bootstrap.yml @@ -42,12 +42,23 @@ spring: port: 8719 dashboard: @sentinel.server-addr@ +springdoc: + swagger-ui: + disable-swagger-default-url: true + urls-primary-name: CamundaRestAPI + urls: + - url: /openapi.json + name: CamundaRestAPI + logging: level: - cn.herodotus.eurynome: debug - org.springframework.security: debug + cn.herodotus: info + org.springframework.security: info + org.springframework.cloud.bus: info org.apache.kafka: WARN + org.reflections.Reflections: error com.alibaba.nacos.client: off + com.alibaba.nacos.common.remote.client: error camunda: bpm: diff --git a/services/eurynome-cloud-bpmn-rest/pom.xml b/services/eurynome-cloud-bpmn-rest/pom.xml index 8f5fbb856..d183e2daa 100644 --- a/services/eurynome-cloud-bpmn-rest/pom.xml +++ b/services/eurynome-cloud-bpmn-rest/pom.xml @@ -27,12 +27,12 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 4.0.0 eurynome-cloud-bpmn-rest - 2.5.4.110 + 2.5.4.120 jar diff --git a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdGroup.java b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdGroup.java index 03a7d8cd8..c2e4006b9 100644 --- a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdGroup.java +++ b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdGroup.java @@ -26,8 +26,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @@ -40,33 +39,33 @@ * @author : gengwei.zheng * @date : 2021/7/20 12:55 */ -@ApiModel(description = "Camunda 组") +@Schema(name = "Camunda 组") @Entity @Table(name = "act_id_group", indexes = {@Index(name = "act_id_group_id_idx", columnList = "id_")}) public class ActIdGroup extends BaseEntity { @JSONField(name = "department_id") @JsonProperty("department_id") - @ApiModelProperty(value = "部门ID") + @Schema(title = "部门ID") @Id @GeneratedValue(generator = "act-group-uuid") @GenericGenerator(name = "act-group-uuid", strategy = "cn.herodotus.eurynome.bpmn.rest.generator.ActIdGroupUUIDGenerator") @Column(name = "id_", length = 64) private String id; - @ApiModelProperty(value = "修订") + @Schema(title = "修订") @JSONField(name = "revision") @JsonProperty("revision") @Column(name = "rev_") private Integer revision; - @ApiModelProperty(value = "名称") + @Schema(title = "名称") @JSONField(name = "department_name") @JsonProperty("department_name") @Column(name = "name_") private String name; - @ApiModelProperty(value = "类型") + @Schema(title = "类型") @JSONField(name = "organization_id") @JsonProperty("organization_id") @Column(name = "type_") diff --git a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdMembership.java b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdMembership.java index e99de3f80..ef4d81073 100644 --- a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdMembership.java +++ b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdMembership.java @@ -27,7 +27,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; -import io.swagger.annotations.ApiModel; +import io.swagger.v3.oas.annotations.media.Schema; import javax.persistence.*; @@ -39,7 +39,7 @@ * @author : gengwei.zheng * @date : 2021/7/20 13:04 */ -@ApiModel(description = "Camunda 人员和组关系") +@Schema(name = "Camunda 人员和组关系") @Entity @Table(name = "act_id_membership", indexes = { @Index(name = "act_id_membership_uid_idx", columnList = "user_id_"), diff --git a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenant.java b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenant.java index 351b7c893..846a37e6b 100644 --- a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenant.java +++ b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenant.java @@ -26,8 +26,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @@ -38,14 +37,14 @@ * @author : gengwei.zheng * @date : 2021/7/20 13:00 */ -@ApiModel(description = "Camunda租户") +@Schema(name = "Camunda租户") @Entity @Table(name = "act_id_tenant", indexes = {@Index(name = "act_id_tenant_id_idx", columnList = "id_")}) public class ActIdTenant extends BaseEntity { @JSONField(name = "organization_id") @JsonProperty("organization_id") - @ApiModelProperty(value = "租户ID") + @Schema(title = "租户ID") @Id @GeneratedValue(generator = "act-tenant-uuid") @GenericGenerator(name = "act-tenant-uuid", strategy = "cn.herodotus.eurynome.bpmn.rest.generator.ActIdTenantUUIDGenerator") diff --git a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenantMember.java b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenantMember.java index e00cb0460..c6d67d5e3 100644 --- a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenantMember.java +++ b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdTenantMember.java @@ -26,8 +26,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @@ -40,7 +39,7 @@ * @author : gengwei.zheng * @date : 2021/7/20 13:08 */ -@ApiModel(description = "Camunda 人员归属关系") +@Schema(name = "Camunda 人员归属关系") @Entity @Table(name = "act_id_tenant_member", indexes = { @Index(name = "act_id_tenant_member_id_idx", columnList = "id_"), @@ -52,7 +51,7 @@ public class ActIdTenantMember extends BaseEntity { @JSONField(name = "ownership_id") @JsonProperty("ownership_id") - @ApiModelProperty(value = "人员ID") + @Schema(title = "人员ID") @Id @GeneratedValue(generator = "act-tenant-member-uuid") @GenericGenerator(name = "act-tenant-member-uuid", strategy = "cn.herodotus.eurynome.bpmn.rest.generator.ActIdTenantMemberUUIDGenerator") diff --git a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdUser.java b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdUser.java index 730948998..53547e7d4 100644 --- a/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdUser.java +++ b/services/eurynome-cloud-bpmn-rest/src/main/java/cn/herodotus/eurynome/bpmn/rest/entity/ActIdUser.java @@ -26,8 +26,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @@ -41,57 +40,57 @@ * @author : gengwei.zheng * @date : 2021/7/20 12:49 */ -@ApiModel(description = "Camunda用户") +@Schema(name = "Camunda用户") @Entity @Table(name = "act_id_user", indexes = {@Index(name = "act_id_user_id_idx", columnList = "id_")}) public class ActIdUser extends BaseEntity { @JSONField(name = "employee_id") @JsonProperty("employee_id") - @ApiModelProperty(value = "人员ID") + @Schema(title = "人员ID") @Id @GeneratedValue(generator = "act-user-uuid") @GenericGenerator(name = "act-user-uuid", strategy = "cn.herodotus.eurynome.bpmn.rest.generator.ActUserUUIDGenerator") @Column(name = "id_", length = 64) private String id; - @ApiModelProperty(value = "修订") + @Schema(title = "修订") @JSONField(name = "reversion") @JsonProperty("reversion") @Column(name = "rev_") private Integer revision = 0; - @ApiModelProperty(value = "姓") + @Schema(title = "姓") @JSONField(name = "employee_name") @JsonProperty("employee_name") @Column(name = "first_") private String firstName; - @ApiModelProperty(value = "名") + @Schema(title = "名") @JSONField(name = "mobile_phone_number") @JsonProperty("mobile_phone_number") @Column(name = "last_") private String lastName; - @ApiModelProperty(value = "电子邮箱") + @Schema(title = "电子邮箱") @JSONField(name = "email") @JsonProperty("email") @Column(name = "email_") private String email; - @ApiModelProperty(value = "密码") + @Schema(title = "密码") @JSONField(name = "password") @JsonProperty("password") @Column(name = "pwd_") private String password; - @ApiModelProperty(value = "密码盐") + @Schema(title = "密码盐") @JSONField(name = "salt") @JsonProperty("salt") @Column(name = "salt_") private String salt; - @ApiModelProperty(value = "锁定过期时间") + @Schema(title = "锁定过期时间") @JSONField(name = "lock_expiration_time") @JsonProperty("lock_expiration_time") @Column(name = "lock_exp_time_") diff --git a/services/eurynome-cloud-upms-ability/pom.xml b/services/eurynome-cloud-upms-ability/pom.xml index b7e7bad9f..65babcf28 100644 --- a/services/eurynome-cloud-upms-ability/pom.xml +++ b/services/eurynome-cloud-upms-ability/pom.xml @@ -27,12 +27,12 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 4.0.0 eurynome-cloud-upms-ability - 2.5.4.110 + 2.5.4.120 diff --git a/services/eurynome-cloud-upms-ability/src/main/resources/bootstrap.yml b/services/eurynome-cloud-upms-ability/src/main/resources/bootstrap.yml index dccfa630c..f8988bc1e 100644 --- a/services/eurynome-cloud-upms-ability/src/main/resources/bootstrap.yml +++ b/services/eurynome-cloud-upms-ability/src/main/resources/bootstrap.yml @@ -30,6 +30,7 @@ spring: group: common - data-id: eurynome-cloud-kafka.yaml group: common + extension-configs: - data-id: ${spring.application.name}.yaml group: herodotus @@ -43,7 +44,10 @@ spring: logging: level: - cn.herodotus.eurynome: DEBUG - org.springframework.security: INFO + cn.herodotus: info + org.springframework.security: info + org.springframework.cloud.bus: info org.apache.kafka: WARN - com.alibaba.nacos.client: debug + org.reflections.Reflections: error + com.alibaba.nacos.client: off + com.alibaba.nacos.common.remote.client: error diff --git a/services/eurynome-cloud-upms-api/pom.xml b/services/eurynome-cloud-upms-api/pom.xml index a12de89e0..1b7b039ed 100644 --- a/services/eurynome-cloud-upms-api/pom.xml +++ b/services/eurynome-cloud-upms-api/pom.xml @@ -29,11 +29,11 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-upms-api - 2.5.4.110 + 2.5.4.120 diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Gender.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Gender.java index 7f80fa8a0..1e9d8ad25 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Gender.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Gender.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -36,7 +35,7 @@ /** * @author gengwei.zheng */ -@ApiModel(value = "性别") +@Schema(name = "性别") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum Gender { /** @@ -46,9 +45,9 @@ public enum Gender { MAN(1, "男"), WOMAN(2, "女"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -74,7 +73,7 @@ public enum Gender { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Identity.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Identity.java index 5386678f1..7fd1ee0c2 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Identity.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/Identity.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -39,7 +38,7 @@ * @author gengwei.zheng * @date 2019/2/15 */ -@ApiModel(value = "人员身份") +@Schema(name = "人员身份") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum Identity { /** @@ -49,9 +48,9 @@ public enum Identity { SECTION_LEADER(1, "部所负责人"), STAFF(2, "员工"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private String text; private static final Map indexMap = new HashMap<>(); @@ -77,7 +76,7 @@ public enum Identity { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/SupplierType.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/SupplierType.java index 9ccd012bb..73958c8cd 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/SupplierType.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/SupplierType.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -39,7 +38,7 @@ * @author : gengwei.zheng * @date : 2020/3/19 16:17 */ -@ApiModel(value = "团队/供应商类型") +@Schema(name = "团队/供应商类型") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum SupplierType { @@ -51,9 +50,9 @@ public enum SupplierType { THIRD_PARTY(2, "第三方企业"), Outsourcing(3, "外包团队"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -79,7 +78,7 @@ public enum SupplierType { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/TechnologyType.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/TechnologyType.java index e2c2bbba6..de47484f8 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/TechnologyType.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/constants/enums/TechnologyType.java @@ -25,8 +25,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.HashMap; @@ -39,7 +38,7 @@ * @author : gengwei.zheng * @date : 2020/3/19 16:17 */ -@ApiModel(value = "应用采用技术类型") +@Schema(name = "应用采用技术类型") @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum TechnologyType { @@ -56,9 +55,9 @@ public enum TechnologyType { ALIAPP(7, "支付宝小程序应用"), DUAPP(8, "百度小程序应用"); - @ApiModelProperty(value = "索引") + @Schema(title = "索引") private final Integer index; - @ApiModelProperty(value = "文字") + @Schema(title = "文字") private final String text; private static final Map indexMap = new HashMap<>(); @@ -84,7 +83,7 @@ public enum TechnologyType { /** * 不加@JsonValue,转换的时候转换出完整的对象。 * 加了@JsonValue,只会显示相应的属性的值 - * + *

* 不使用@JsonValue @JsonDeserializer类里面要做相应的处理 * * @return Enum索引 diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysDefaultRole.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysDefaultRole.java index 252d44f64..123a0f706 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysDefaultRole.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysDefaultRole.java @@ -22,11 +22,11 @@ package cn.herodotus.eurynome.upms.api.entity.system; -import cn.herodotus.eurynome.data.base.entity.BaseSysEntity; import cn.herodotus.eurynome.common.constant.enums.AccountType; +import cn.herodotus.eurynome.data.base.entity.BaseSysEntity; import cn.herodotus.eurynome.upms.api.constants.UpmsConstants; import com.google.common.base.MoreObjects; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.GenericGenerator; @@ -54,13 +54,13 @@ public class SysDefaultRole extends BaseSysEntity { @Column(name = "default_id", length = 64) private String defaultId; - @ApiModelProperty(value = "场景") + @Schema(title = "场景") @Column(name = "scene", unique = true) @Enumerated(EnumType.STRING) private AccountType scene = AccountType.INSTITUTION; @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = UpmsConstants.REGION_SYS_ROLE) - @ApiModelProperty(value = "角色ID") + @Schema(title = "角色ID") @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "role_id", nullable = false) private SysRole role; diff --git a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysUser.java b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysUser.java index 3c8059452..98db9f52f 100644 --- a/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysUser.java +++ b/services/eurynome-cloud-upms-api/src/main/java/cn/herodotus/eurynome/upms/api/entity/system/SysUser.java @@ -32,8 +32,7 @@ import cn.herodotus.eurynome.data.base.entity.BaseSysEntity; import cn.herodotus.eurynome.upms.api.constants.UpmsConstants; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; @@ -49,7 +48,7 @@ * @author : gengwei.zheng * @date : 2020/4/10 11:06 */ -@ApiModel(description = "系统用户") +@Schema(name = "系统用户") @Entity @Table(name = "sys_user", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_name"})}, indexes = {@Index(name = "sys_user_id_idx", columnList = "user_id"), @Index(name = "sys_user_unm_idx", columnList = "user_name")}) @@ -57,31 +56,31 @@ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = UpmsConstants.REGION_SYS_USER) public class SysUser extends BaseSysEntity { - @ApiModelProperty(value = "用户ID") + @Schema(title = "用户ID") @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid2") @Column(name = "user_id", length = 64) private String userId; - @ApiModelProperty(value = "用户名") + @Schema(title = "用户名") @Column(name = "user_name", length = 128, unique = true) private String userName; - @ApiModelProperty(value = "密码", notes = "BCryptPasswordEncoder") + @Schema(title = "密码", description = "BCryptPasswordEncoder") @Column(name = "password", length = 256) private String password; - @ApiModelProperty(value = "昵称") + @Schema(title = "昵称") @Column(name = "nick_name", length = 64) private String nickName; - @ApiModelProperty(value = "人员ID") + @Schema(title = "人员ID") @Column(name = "employee_id", length = 256) private String employeeId; @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = UpmsConstants.REGION_SYS_ROLE) - @ApiModelProperty(value = "用户角色") + @Schema(title = "用户角色") @ManyToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SUBSELECT) @JoinTable(name = "sys_user_role", diff --git a/services/eurynome-cloud-upms-logic/pom.xml b/services/eurynome-cloud-upms-logic/pom.xml index c031c1f50..0b0435b3d 100644 --- a/services/eurynome-cloud-upms-logic/pom.xml +++ b/services/eurynome-cloud-upms-logic/pom.xml @@ -7,11 +7,11 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-upms-logic - 2.5.4.110 + 2.5.4.120 diff --git a/services/eurynome-cloud-upms-rest/pom.xml b/services/eurynome-cloud-upms-rest/pom.xml index ca0e23b8c..0364564b9 100644 --- a/services/eurynome-cloud-upms-rest/pom.xml +++ b/services/eurynome-cloud-upms-rest/pom.xml @@ -6,11 +6,11 @@ services cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 eurynome-cloud-upms-rest - 2.5.4.110 + 2.5.4.120 eurynome-cloud-upms-rest 通用权限,人员信息服务供应商 diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/UpmsConstantsController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/UpmsConstantsController.java index 4f2bc13ca..b68ff9f85 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/UpmsConstantsController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/UpmsConstantsController.java @@ -2,7 +2,7 @@ import cn.herodotus.eurynome.common.domain.Result; import cn.herodotus.eurynome.upms.api.constants.UpmsConstants; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; import org.apache.commons.collections4.MapUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,11 +14,11 @@ @RequestMapping("/constants") public class UpmsConstantsController { - @ApiOperation(value = "获取服务使用常量", notes = "获取服务涉及的常量以及信息") + @Operation(summary = "获取服务使用常量", description = "获取服务涉及的常量以及信息") @GetMapping(value = "/enums") public Result> findAllEnums() { Result> result = new Result<>(); - Map allEnums = UpmsConstants.getAllEnums(); + Map allEnums = UpmsConstants.getAllEnums(); if (MapUtils.isNotEmpty(allEnums)) { return result.ok().data(allEnums); } else { diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/development/SupplierController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/development/SupplierController.java index b2f9ac934..ecb8b9c29 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/development/SupplierController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/development/SupplierController.java @@ -5,8 +5,8 @@ import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.development.Supplier; import cn.herodotus.eurynome.upms.logic.service.development.SupplierService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,7 +22,7 @@ */ @RestController @RequestMapping("/microservice/supplier") -@Api(tags = {"用户中心服务", "开发团队/厂商管理接口"}) +@Tag(name = "开发团队/厂商管理接口") public class SupplierController extends BaseWriteableRestController { private final SupplierService supplierService; @@ -37,7 +37,7 @@ public WriteableService getWriteableService() { return this.supplierService; } - @ApiOperation(value = "获取全部厂商数据", notes = "查询全部的厂商数据,用作列表选择根据目前观测该类数据不会太多,如果过多就需要修改查询方法和方式") + @Operation(summary = "获取全部厂商数据", description = "查询全部的厂商数据,用作列表选择根据目前观测该类数据不会太多,如果过多就需要修改查询方法和方式") @GetMapping("/list") @Override public Result> findAll() { diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthApplicationsController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthApplicationsController.java index d03e8451e..47441f021 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthApplicationsController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthApplicationsController.java @@ -5,10 +5,10 @@ import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.oauth.OauthApplications; import cn.herodotus.eurynome.upms.logic.service.oauth.OauthApplicationsService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PutMapping; @@ -24,7 +24,7 @@ */ @RestController @RequestMapping("/oauth/applications") -@Api(tags = {"用户中心服务", "Oauth应用接口"}) +@Tag(name = "Oauth应用接口") @Transactional(rollbackFor = Exception.class) public class OauthApplicationsController extends BaseWriteableRestController { @@ -40,10 +40,10 @@ public WriteableService getWriteableService() { return this.oauthApplicationsService; } - @ApiOperation(value = "给应用分配Scope", notes = "给应用分配Scope") - @ApiImplicitParams({ - @ApiImplicitParam(name = "appKey", required = true, value = "appKey", dataType = "String", dataTypeClass = String.class, paramType = "query"), - @ApiImplicitParam(name = "scopes[]", required = true, value = "Scope对象组成的数组", dataType = "String[]", dataTypeClass = String[].class, paramType = "query") + @Operation(summary = "给应用分配Scope", description = "给应用分配Scope") + @Parameters({ + @Parameter(name = "appKey", required = true, description = "appKey"), + @Parameter(name = "scopes[]", required = true, description = "Scope对象组成的数组") }) @PutMapping public Result assign(@RequestParam(name = "appKey") String scopeId, @RequestParam(name = "scopes[]") String[] scopes) { diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthClientDetailsController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthClientDetailsController.java index 869624f54..ef683d53b 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthClientDetailsController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthClientDetailsController.java @@ -7,10 +7,10 @@ import cn.herodotus.eurynome.upms.api.entity.oauth.OauthClientDetails; import cn.herodotus.eurynome.upms.api.helper.UpmsHelper; import cn.herodotus.eurynome.upms.logic.service.oauth.OauthClientDetailsService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -28,11 +28,11 @@ * @author : gengwei.zheng * @date : 2020/3/20 11:48 */ -@Api(tags = {"用户中心服务", "Oauth客户端详情接口"}) +@Tag(name = "Oauth客户端详情接口") @RestController @RequestMapping("/oauth/client_details") @Transactional(rollbackFor = Exception.class) -public class OauthClientDetailsController extends BaseController{ +public class OauthClientDetailsController extends BaseController { private final OauthClientDetailsService oauthClientDetailsService; @@ -46,10 +46,10 @@ public WriteableService getWriteableService() { return oauthClientDetailsService; } - @ApiOperation(value = "获取ClientDetails分页数据", notes = "通过pageNumber和pageSize获取分页数据") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNumber", required = true, value = "当前页数", dataType = "int", paramType = "query"), - @ApiImplicitParam(name = "pageSize", required = true, value = "每页显示数据条目", dataType = "int", paramType = "query") + @Operation(summary = "获取ClientDetails分页数据", description = "通过pageNumber和pageSize获取分页数据") + @Parameters({ + @Parameter(name = "pageNumber", required = true, description = "当前页数"), + @Parameter(name = "pageSize", required = true, description = "每页显示数据条目") }) @GetMapping @Override @@ -66,9 +66,9 @@ public Result> findByPage( return new Result>().failed().message("查询数据失败!"); } - @ApiOperation(value = "更新ClientDetails", notes = "接收JSON数据,转换为OauthClientDetails实体,进行更新") - @ApiImplicitParams({ - @ApiImplicitParam(name = "oauthClientDetails", required = true, value = "可转换为OauthClientDetails实体的json数据", dataType = "HerodotusClientDetails", dataTypeClass = HerodotusClientDetails.class, paramType = "body") + @Operation(summary = "更新ClientDetails", description = "接收JSON数据,转换为OauthClientDetails实体,进行更新") + @Parameters({ + @Parameter(name = "oauthClientDetails", required = true, description = "可转换为OauthClientDetails实体的json数据") }) @PostMapping public Result saveOrUpdate(@RequestBody HerodotusClientDetails domain) { @@ -76,9 +76,9 @@ public Result saveOrUpdate(@RequestBody HerodotusClientDetai return result(oauthClientDetails); } - @ApiOperation(value = "删除ClientDetails", notes = "根据clientId删除ClientDetails,以及相关联的关系数据") - @ApiImplicitParams({ - @ApiImplicitParam(name = "clientId", required = true, value = "clientId", dataType = "String", dataTypeClass = String.class, paramType = "body") + @Operation(summary = "删除ClientDetails", description = "根据clientId删除ClientDetails,以及相关联的关系数据") + @Parameters({ + @Parameter(name = "clientId", required = true, description = "clientId") }) @DeleteMapping @Override diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthScopesController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthScopesController.java index b4daf3545..952847234 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthScopesController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/oauth/OauthScopesController.java @@ -5,10 +5,10 @@ import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.oauth.OAuth2Scopes; import cn.herodotus.eurynome.upms.logic.service.oauth.OauthScopesService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -23,7 +23,7 @@ */ @RestController @RequestMapping("/oauth/scopes") -@Api(tags = {"用户中心服务", "Oauth权限范围接口"}) +@Tag(name = "Oauth权限范围接口") public class OauthScopesController extends BaseWriteableRestController { private final OauthScopesService oauthScopesService; @@ -38,10 +38,10 @@ public WriteableService getWriteableService() { return this.oauthScopesService; } - @ApiOperation(value = "给OauthScopes授权", notes = "为OauthScopes分配接口权限") - @ApiImplicitParams({ - @ApiImplicitParam(name = "scopeId", required = true, value = "ScopeID", dataType = "String", dataTypeClass = String.class, paramType = "query"), - @ApiImplicitParam(name = "authorities[]", required = true, value = "权限对象组成的数组", dataType = "String[]", dataTypeClass = String[].class, paramType = "query") + @Operation(summary = "给OauthScopes授权", description = "为OauthScopes分配接口权限") + @Parameters({ + @Parameter(name = "scopeId", required = true, description = "ScopeID"), + @Parameter(name = "authorities[]", required = true, description = "权限对象组成的数组") }) @PutMapping public Result authorize(@RequestParam(name = "scopeId") String scopeId, @RequestParam(name = "authorities[]") String[] authorities) { diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysAuthorityController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysAuthorityController.java index 39013b6b7..7e3a5a0d9 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysAuthorityController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysAuthorityController.java @@ -24,9 +24,9 @@ package cn.herodotus.eurynome.upms.rest.controller.system; +import cn.herodotus.eurynome.common.constant.enums.AuthorityType; import cn.herodotus.eurynome.common.constant.magic.PlatformConstants; import cn.herodotus.eurynome.common.domain.Result; -import cn.herodotus.eurynome.common.constant.enums.AuthorityType; import cn.herodotus.eurynome.rest.base.controller.BaseWriteableRestController; import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.system.SysAuthority; @@ -34,8 +34,8 @@ import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core.lang.tree.TreeUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -53,7 +53,7 @@ */ @RestController @RequestMapping("/authority") -@Api(tags = {"用户中心服务", "系统权限接口"}) +@Tag(name = "系统权限接口") public class SysAuthorityController extends BaseWriteableRestController { private final SysAuthorityService sysAuthorityService; @@ -68,7 +68,7 @@ public WriteableService getWriteableService() { return this.sysAuthorityService; } - @ApiOperation(value = "获取权限树", notes = "获取权限树形数据") + @Operation(summary = "获取权限树", description = "获取权限树形数据") @GetMapping("/tree") public Result>> findTree() { Result>> result = new Result<>(); @@ -88,7 +88,7 @@ public Result>> findTree() { } } - @ApiOperation(value = "获取全部API接口", notes = "获取全部API接口") + @Operation(summary = "获取全部API接口", description = "获取全部API接口") @GetMapping("/apis") public Result> findAllApis() { List sysAuthorities = sysAuthorityService.findAllByAuthorityType(AuthorityType.API); diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysRoleController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysRoleController.java index 2f0902212..b1fdaf2fa 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysRoleController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysRoleController.java @@ -29,10 +29,10 @@ import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.system.SysRole; import cn.herodotus.eurynome.upms.logic.service.system.SysRoleService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -41,7 +41,7 @@ @RestController @RequestMapping("/role") -@Api(tags = {"用户中心服务", "系统角色接口"}) +@Tag(name = "系统角色接口") public class SysRoleController extends BaseWriteableRestController { private final SysRoleService sysRoleService; @@ -56,10 +56,10 @@ public WriteableService getWriteableService() { return this.sysRoleService; } - @ApiOperation(value = "给角色授权", notes = "为角色赋予权限") - @ApiImplicitParams({ - @ApiImplicitParam(name = "roleId", required = true, value = "角色ID", dataType = "String", dataTypeClass = String.class, paramType = "query"), - @ApiImplicitParam(name = "authorities[]", required = true, value = "权限对象组成的数组", dataType = "String[]", dataTypeClass = String[].class, paramType = "query") + @Operation(summary = "给角色授权", description = "为角色赋予权限") + @Parameters({ + @Parameter(name = "roleId", required = true, description = "角色ID"), + @Parameter(name = "authorities[]", required = true, description = "权限对象组成的数组") }) @PutMapping public Result authorize(@RequestParam(name = "roleId") String roleId, @RequestParam(name = "authorities[]") String[] authorities) { diff --git a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysUserController.java b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysUserController.java index dd432087b..051ef937f 100644 --- a/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysUserController.java +++ b/services/eurynome-cloud-upms-rest/src/main/java/cn/herodotus/eurynome/upms/rest/controller/system/SysUserController.java @@ -29,10 +29,10 @@ import cn.herodotus.eurynome.rest.base.service.WriteableService; import cn.herodotus.eurynome.upms.api.entity.system.SysUser; import cn.herodotus.eurynome.upms.logic.service.system.SysUserService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -47,7 +47,7 @@ */ @RestController @RequestMapping("/user") -@Api(tags = {"用户中心服务", "系统用户接口"}) +@Tag(name = "系统用户接口") public class SysUserController extends BaseWriteableRestController { private final SysUserService sysUserService; @@ -62,10 +62,10 @@ public WriteableService getWriteableService() { return this.sysUserService; } - @ApiOperation(value = "给用户分配角色", notes = "给用户分配角色", produces = "application/x-www-form-urlencoded", consumes = "application/json") - @ApiImplicitParams({ - @ApiImplicitParam(name = "userId", required = true, value = "userId", dataType = "String", dataTypeClass = String.class, paramType = "query"), - @ApiImplicitParam(name = "roles[]", required = true, value = "角色对象组成的数组", dataType = "String[]", dataTypeClass = String[].class, paramType = "query") + @Operation(summary = "给用户分配角色", description = "给用户分配角色") + @Parameters({ + @Parameter(name = "userId", required = true, description = "userId"), + @Parameter(name = "roles[]", required = true, description = "角色对象组成的数组") }) @PutMapping public Result assign(@RequestParam(name = "userId") String userId, @RequestParam(name = "roles[]") String[] roles) { diff --git a/services/pom.xml b/services/pom.xml index a5dc72274..43c6d5674 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -31,7 +31,7 @@ eurynome-cloud cn.herodotus.eurynome - 2.5.4.110 + 2.5.4.120 services