Bonita Web REST API

The Bonita Web REST API exposes every Bonita Runtime feature reachable over HTTP — BPM (processes, cases, tasks, activities, flow nodes, timers, messages, signals), identity (users, groups, roles, memberships, profiles, custom user information), applications and pages, the Business Data Model and business data queries, documents and comments, and platform/license administration. It is described by a single first-party OpenAPI 3.0.2 document (153 paths, 224 operations, 162 schemas) that Bonitasoft treats as the single source of truth for the HTTP surface and publishes as an open-source repository, a versioned GitHub release asset, and a live ReDoc reference at api-documentation.ofelia.com.

OpenAPI Specification

bonitasoft-bonita-openapi.yml Raw ↑
openapi: 3.0.2
info:
  license:
    name: GPL-v2.0
    url: http://www.gnu.org/licenses/gpl-2.0.txt
  version: 1.0.9
  title: Bonita API
  description: |
    <p> 
    <a download="openapi.yaml" href="./openapi.yaml" target="_blank" class="btn-download">Download OpenAPI specification</a>
    <a download="postman.json" href="./postman.json" target="_blank" class="btn-download">Download Postman collection</a>
    </p>

    <hr>

    The REST API lets you access the data with HTTP requests; it is useful when implementing rich web forms / pages for a good user experience.

    An open source [java client](https://github.com/bonitasoft/bonita-java-client) is implemented above the HTTP API. It is available on [Maven central](https://search.maven.org/search?q=g:%22org.bonitasoft.web%22%20AND%20a:%22bonita-java-client%22).

    If your application is using a technology other than Java, you can integrate it with the Bonita solution using the Web REST API. This API provides
    access to all Bonita objects (like processes, tasks, users, connectors etc.), to execute operations on them (create, retrieve, update, delete).
    You can use these operations to create a workflow with Bonita and integrate it into your application. The Bonita Engine remains responsible for executing
    the workflow logic (connectors, gateways with conditions, messages, timers etc.) while your application gives access to the workflow.
    Users can manage processes and tasks, and perform administrative activities.

    ### API Extensions

    You can create [Rest API Extensions](https://documentation.ofelia.com/bonita/latest/api/rest-api-extensions) to extend the Rest API by adding missing resources (not provided by the Rest API).
    It is possible for an extension to interact with the engine (via the API) or with any other external service (for example a database, a directory, or a web service).

    ### Create a resource

    | Request URL | `http://.../API/{API_name}/{resource_name}/  `|
    |:-|:-|
    | Request Method | POST|
    | Request Payload | an item in JSON|
    | Response | the same item in JSON, containing the values provided in the posted item, completed with default values and identifiers provided by Bonita Engine.|

    ### Read a resource

    | Request URL | `http://.../API/{API_name}/{resource_name}/{id} `|
    |:-|:-|
    | Request Method | GET|
    | Response | an item in JSON|

    Example `http://.../API/identity/user/5 `

    #### Extend resource response

    On some resources, in GET methods the `d` (deploy) URL query parameter can be used to extend the response objects. The value of this parameter consists of an attribute for which you want to make an extended request (called a deploy) and retrieve attributes of a linked resource.
    This means that instead of retrieving the ID or a parent or referenced resource, you can retrieve the full object.

    For example, when you retrieve a task, you can also retrieve the process definition attributes in addition to the process definition ID that is already part of the task resource.
    The supported deploy values for a task include its process (d=processId).

    Specifiy multiple `d` parameter to extend several resources. For instance, to retrieve the flow node of id 143 and the associated process, process instance and assigned user, call `/API/bpm/flowNode/143?d=processId&d=caseId&d=assigned_id`

    #### With compound identifier

    The order of the identifier parts for each resource type is given in the table above.

    | Request URL | `http://.../API/{API_name}/{resource_name}/{id_part1}/{id_part2} `|
    |:-|:-|
    | Request Method | GET|
    | Response | an item in JSON|

    Example `http://.../API/identity/membership/5/12/24 `

    ### Update a resource

    | Request URL | `http://.../API/{API_name}/{resource_name}/{id} `|
    |:-|:-|
    | Request Method | PUT|
    | Request Payload | a map in JSON containing the new values for the attributes you want to change.|
    | Response | the corresponding item in JSON with new values where you requested a modification|

    Example `http://.../API/identity/user/5`

    #### With compound identifier:

    Response: the corresponding item in JSON with new values where you requested a modification.

    | Request URL | `http://.../API/{API_name}/{resource_name}/{id_part1}/{id_part2} `|
    |:-|:-|
    | Request Method | PUT|
    | Request Payload | ` a map in JSON containing the new values for the attributes you want to change `|
    | Response | ` the corresponding item in JSON with new values where you requested a modification`|

    Example
    `http://.../API/identity/membership/5/12/24 `

    ### Delete resources

    Use the DELETE request to remove multiple resources.

    | Request URL | `http://.../API/{API_name}/{resource_name}/ `|
    |:-|:-|
    | Request Method | DELETE|
    | Request Payload | A list of identifiers in JSON, for example `["id1","id2","id3"]`. Compound identifiers are separated by '/' characters.|
    | Response | `empty `|

    Example
    `http://.../API/identity/membership/ `

    ### Search for a resource

    The required object is specified with a set of filters in the request URL. The URL parameters must be URL-encoded.

    Results are returned in a paged list, so you have to specify the page (counting from zero), and the number of results per page (count), additionally you can define a sort key (order). You can see the total number of matching results in the HTTP response header Content-Range.
    If you are searching for business data using a custom query, there must be a [count query in the BDM](https://documentation.ofelia.com/bonita/latest/data/define-and-deploy-the-bdm). If there is no count query, results from a custom query on business data cannot be paged properly (the header Content-Range will be absent).
    For business data default queries, the count query is defined automatically.

    The available filters are the attributes of the item plus some specific filters defined by each item.

    | Request URL | `http://.../API/{API_name}/{resource_name}?p={page}&c={count}&o={order}&s={query}&f={filter_name}={filter_value}&f=... `|
    |:-|:-|
    | Request Method | GET|
    | Response | an array of items in JSON|

    Example
    `/API/identity/user?p=0&c=10&o=firstname&s=test&f=manager_id=3`

    For a GET method that retrieves more than one instance of a resource, you can specify the following request parameters:

    * p (Mandatory): index of the page to display
    * c (Mandatory): maximum number of elements to retrieve
    * o: order of presentation of values in response: must be either `attributeName ASC` or `attributeName DESC`. The final order parameter value must be URL encoded.
    * f: list of filters, specified as `attributeName=attributeValue`. To filter on more than one attribute, specify an f parameters for each attribute. The final filter parameter value must be URL encoded.
      The attributes you can filter on are specific to the resource.
    * s: search on name or search indexes. Before Bonita 2024.1, the matching policy depended on the configuration of [word-based search](https://documentation.ofelia.com/bonita/2023.2/api/using-list-and-search-methods#word_based_search).
      For example, if word-based search was enabled, `s=Valid` returned matches containing the string "valid" at the start of any word in the attribute value word,
      such as "Valid address", "Not a valid address", and "Validated request" but not "Invalid request".
      If word-based search was disabled, `s=Valid` returned matches containing the string "valid" at the start of the attribute value, such as "Valid address" or "Validated request" but not "Not a valid address" or "Invalid request".
      Since Bonita 2024.1, the search mode can no longer be configured and a "like-based" algorithm is used. This means all the matching records for which the search term occurs anywhere in a phrase or a word are returned.

    ### Errors

    The API uses standard HTTP status codes to indicate the success or failure of the API call.

    If you get a `401` response code :
      - make sure that the cookies have been transfered with the call
      - make sure that the cookies transfered are the ones generated during the last sucessfull login call
      - if one of the PUT, DELETE or POST method is used, make sure that the `X-Bonita-API-Token` header is included
      - if the X-Bonita-API-Token header is included, make sure that the value is the same as the one of the cookie generated during the last login
      - Maybe a logout was issued or the session has expired; try to log in again, and re run the request with the new cookies and the new value for the `X-Bonita-API-Token` header.
  x-logo:
    url: images/ofelia-logo.svg
    backgroundColor: '#19465f'
    altText: Bonita API
    href: /
servers:
  - url: http://localhost:8080/bonita
    description: Sample url for a local development server.
security:
  - bonita_auth: []
    bonita_token: []
  - bearer_auth: []
tags:
  - name: Activity
    x-displayName: Activity
    description: Activity
  - name: ActivityVariable
    x-displayName: ActivityVariable
    description: ActivityVariable
  - name: ArchivedActivityVariable
    x-displayName: ArchivedActivityVariable
    description: ArchivedActivityVariable
  - name: Actor
    x-displayName: Actor
    description: Actor
  - name: ActorMember
    x-displayName: ActorMember
    description: ActorMember
  - name: Application
    x-displayName: Application
    description: Manage applications. This enables you to build a consistent functional applicative environment for users to interact with business processes and business data from one place.
  - name: ApplicationMenu
    x-displayName: ApplicationMenu
    description: |
      Manage the set of menus in an application. This set of menus enables a user to navigate to the application pages.

      There are two types of menu item:

      A top-level item appears in the navigation bar of the application. A top-level item can be clickable, leading to a page, or can be a parent for a menu of clickable items.
      A child menu item becomes visible in a menu when the parent is selected. A child menu item is clickable and leads to a page.
      Each menu item has an index that defines the position in the menu. For a top-level menu item, this is the position in the the navigation bar counting from the left. For a child menu item, this is the position in the menu counting from the top.
  - name: ApplicationPage
    x-displayName: ApplicationPage
    description: |
      An application page is a custom page that has been associated with an application. Use this resource to manage application pages and define the paths used to access them. This list of pages will be used to build the application menus.
  - name: ArchivedActivity
    x-displayName: ArchivedActivity
    description: ArchivedActivity
  - name: ArchivedProcessInstance
    x-displayName: ArchivedProcessInstance
    description: ArchivedProcessInstance
  - name: ArchivedProcessInstanceComment
    x-displayName: ArchivedProcessInstanceComment
    description: ArchivedProcessInstanceComment
  - name: ArchivedProcessInstanceDocument
    x-displayName: ArchivedProcessInstanceDocument
    description: ArchivedProcessInstanceDocument
  - name: ArchivedConnectorInstance
    x-displayName: ArchivedConnectorInstance
    description: ArchivedConnectorInstance
  - name: ArchivedFlowNode
    x-displayName: ArchivedFlowNode
    description: ArchivedFlowNode
  - name: ArchivedHumanTask
    x-displayName: ArchivedHumanTask
    description: ArchivedHumanTask
  - name: ArchivedManualTask
    x-displayName: ArchivedManualTask
    description: ArchivedManualTask
  - name: ArchivedTask
    x-displayName: ArchivedTask
    description: ArchivedTask
  - name: ArchivedUserTask
    x-displayName: ArchivedUserTask
    description: ArchivedUserTask
  - name: Authentication
    x-displayName: Authentication
    description: Authentication
  - name: PlatformAuthentication
    x-displayName: Platform Authentication
    description: Platform Authentication
  - name: BDM
    x-displayName: Business Data Model
    description: |
      Show status or install or update the Business Data Model.

      Installing or updating a BDM needs to be done in two successive steps:

      1. Upload a BDM file
      2. Install/Update the previously uploaded file

      **To do this, the maintenance mode needs to be enabled.**

      **In Enterprise editions, if you have an access control file installed, you need to delete it before installing or updating your BDM.**
  - name: BDMAccessControl
    x-displayName: BDMAccessControl
    description: BDM Access control is available to protect the BDM. You can use this API to get the access control status (lastUpdatedBy, lastUpdateDate...).
  - name: Business Data Operations
    x-displayName: Business Data Operations
    description: BDM Rest APIs allow to create / update / delete / import in bulk Bonita Business Data.
  - name: BusinessDataQuery
    x-displayName: BusinessDataQuery
    description: BDM Rest APIs allow to query Bonita Business Data.
  - name: BPM
    x-displayName: BPM
    description: Easily retrieve human or service tasks, call activities, and subprocesses with BPM APIs. Perform maintenance tasks.
  - name: ProcessInstance
    x-displayName: ProcessInstance
    description: ProcessInstance
  - name: ProcessInstanceComment
    x-displayName: ProcessInstanceComment
    description: ProcessInstanceComment
  - name: ProcessInstanceDocument
    x-displayName: ProcessInstanceDocument
    description: ProcessInstanceDocument
  - name: ProcessInstanceInfo
    x-displayName: ProcessInstanceInfo
    description: ProcessInstanceInfo
  - name: ProcessInstanceVariable
    x-displayName: ProcessInstanceVariable
    description: ProcessInstanceVariable
  - name: ArchivedProcessInstanceVariable
    x-displayName: ArchivedProcessInstanceVariable
    description: ArchivedProcessInstanceVariable
  - name: ConnectorFailure
    x-displayName: ConnectorFailure
    description: ConnectorFailure
  - name: ConnectorInstance
    x-displayName: ConnectorInstance
    description: ConnectorInstance
  - name: CustomUser
    x-displayName: CustomUser
    description: CustomUser
  - name: CustomUserDefinition
    x-displayName: CustomUserDefinition
    description: CustomUserDefinition
  - name: CustomUserValue
    x-displayName: CustomUserValue
    description: CustomUserValue
  - name: DataRetention
    x-displayName: Data Retention
    description: |
      Configure how Bonita automatically deletes obsolete business data. A retention rule applies to a specific business object type and defines when its instances become eligible for deletion based on a reference date (creation or last update) and a retention period in days. The data retention service runs on a configurable cron schedule.

      This Web REST API is available in **Enterprise editions only**, since version 11.0.
  - name: Delegation
    x-displayName: Delegation
    description: |
      Delegate human tasks from one user (the delegator) to another (the delegate) for a bounded period and a whitelist of processes. Delegation grants the delegate visibility and execution rights on the delegator's tasks without reassigning them: ownership and the audit trail are preserved. A user can hold at most one delegation rule at a time, and a rule's status (scheduled, active, expired) is derived from its date range.

      Id fields are sent as numeric `int64` in request bodies but returned as strings in responses, to avoid JavaScript precision loss on large `long` values; this is intentional and documented per field.

      There is no `GET /API/delegation/rule/{ruleId}`: the engine does not expose a single-rule read, so fetch a rule through the search endpoint (`GET /API/delegation/rule`) filtered by `id`. This is a known API gap, not a spec omission.

      This Web REST API is available in **Enterprise editions only**, since version 2026.2.
  - name: Diagram
    x-displayName: Diagram
    description: Diagram
  - name: ProcessInfo
    x-displayName: ProcessInfo
    description: ProcessInfo
  - name: FlowNode
    x-displayName: FlowNode
    description: FlowNode
  - name: Failure
    x-displayName: BPM Failure
    description: |
      Failure leading a BPM entity instance to a failed state
      This Web REST API is available in **Enterprise editions only**, since version 10.3 (2025.1).
  - name: ArchivedFailure
    x-displayName: Archived BPM Failure
    description: |
      Archived version of the Failure leading a BPM entity instance to a failed state.
      This Web REST API is available in **Enterprise editions only**, since version 10.3 (2025.1).
  - name: FormMappingBDM
    x-displayName: FormMappingBDM
    description: FormMappingBDM
  - name: Group
    x-displayName: Group
    description: The group a user belongs to. Groups have a hierarchy (subgroups can be created inside a group).
  - name: HumanTask
    x-displayName: HumanTask
    description: HumanTask
  - name: I18nlocale
    x-displayName: I18nlocale
    description: I18nlocale
  - name: I18ntranslation
    x-displayName: I18nTranslation
    description: I18nTranslation
  - name: Information
    x-displayName: Information
    description: |
      Handle the platform information.
      This Web REST API is available since version 10.2 (2024.3). Most of the information returned is only for Subscription editions.
  - name: License
    x-displayName: License
    description: |
      Handle the license information. This requires a platform session. Log in using the platform login service.
      This Web REST API is available in **Enterprise editions only**, since version 7.11.
  - name: ManualTask
    x-displayName: ManualTask
    description: ManualTask
  - name: Membership
    x-displayName: Membership
    description: Manage membership of users. There is a membership when a user belongs to a group and a role. Use this resource to add, search, and delete memberships.
  - name: Message
    x-displayName: Message
    description: Message
  - name: Page
    x-displayName: Page
    description: Use the page resource to access custom pages, UI Designer pages, layouts or forms and REST API extensions.
  - name: Platform
    x-displayName: Platform
    description: The Platform API resources require a platform session. In order to get one, log in as the platform administrator using the platform login service.
  - name: Process
    x-displayName: Process
    description: Deploy and manage process definitions. In addition, you can instantiate a process, which will create a new process instance (case).
  - name: ProcessConnectorDependency
    x-displayName: ProcessConnectorDependency
    description: ProcessConnectorDependency
  - name: ProcessParameter
    x-displayName: ProcessParameter
    description: ProcessParameter
  - name: ProcessResolutionProblem
    x-displayName: ProcessResolutionProblem
    description: ProcessResolutionProblem
  - name: ProcessSupervisor
    x-displayName: ProcessSupervisor
    description: ProcessSupervisor
  - name: ProfessionalContactData
    x-displayName: ProfessionalContactData
    description: ProfessionalContactData
  - name: Profile
    x-displayName: Profile
    description: Profile
  - name: ProfileEntry
    x-displayName: ProfileEntry
    description: ProfileEntry
  - name: ProfileMember
    x-displayName: ProfileMember
    description: ProfileMember
  - name: Role
    x-displayName: Role
    description: Role
  - name: Log
    x-displayName: Log
    description: |
      Access log entries recorded by the Bonita Engine during execution. Logs capture actions performed on the platform such as process deployments, task executions, or configuration changes.
      This Web REST API is available in **Enterprise editions only**.
  - name: Session
    x-displayName: Session
    description: Session
  - name: Task
    x-displayName: Task
    description: Task
  - name: Theme
    x-displayName: Theme
    description: Theme
  - name: TimerEventTrigger
    x-displayName: TimerEventTrigger
    description: TimerEventTrigger
  - name: User
    x-displayName: User
    description: User
  - name: UserTask
    x-displayName: UserTask
    description: UserTask
  - name: RestAPIextensions
    x-displayName: API extensions
    description: |
      Create REST API extensions to use third party systems (databases, web services, Bonita Engine, etc) data in forms and pages.

      REST API extensions can be used to query business data, Bonita Engine APIs, or an external information system (such as a database, web service, LDAP directory...). They also help to keep a clean separation between the front-end (forms, pages, and interfaces visible to users) and the back-end (processes).
    externalDocs:
      url: https://documentation.ofelia.com/bonita/latest/rest-api-extensions
  - name: FormFileUpload
    x-displayName: Form file upload
    description: Supports any type of files, used to upload a file before submitting a process or task form with a document in its contract.
paths:
  /loginservice:
    post:
      tags:
        - Authentication
      operationId: login
      security: []
      summary: Login
      description: |
        A call to the `/loginservice` will generates a set-cookie header in the response.

        The `JSESSIONID` cookie must be transfered with each subsequent calls. (If the REST API is used in an application running in a web browser, this is handled automatically by the web browser just like any cookies).

        Additional protection agains CSRF attacks is enabled by default for all fresh installations This security relies on `X-Bonita-API-Token` information.
        The `X-Bonita-API-Token` value can be found in the cookie named: `X-Bonita-API-Token`.

        All the subsequence REST API calls performing changes in the system using DELETE, POST, or PUT HTTP methods must contain the **HTTP header** below:

        ``` X-Bonita-API-Token: example-dummy-not-be-used-value ```
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LoginRequest'
      x-codeSamples:
        - lang: Shell
          label: Curl
          source: |
            # Generate cookie file
            curl -v -c saved_cookies.txt \
            --url 'http://localhost:8080/bonita/loginservice' \
            --header 'Content-Type: application/x-www-form-urlencoded'
              --data-urlencode 'username=install' \
              --data-urlencode 'password=install' \
              --data-urlencode 'redirect=false' \
              --data-urlencode 'redirectURL='
              
              # Reuse the cookie file and set the `X-Bonita-API-Token` header
              curl -b saved_cookies.txt -X GET \
            -- header 'X-Bonita-API-Token: <token>' \
            --url 'http://localhost:8080/bonita/API/bpm/process?c=100&p=0'
      responses:
        '204':
          description: Login success
          headers:
            Set-Cookie:
              description: Session cookie
              schema:
                type: string
                example: JSESSIONID=C5385BFEE2969D9E46F0160C1952B0F1; Path=/bonita; HttpOnly; SameSite=Lax
            X-Bonita-API-Token:
              description: X-Bonita-API-Token - CSRF token (also present in the cookie response)
              schema:
                type: string
              example: ed27cbeb-9953-4d77-b5a2-1f62a6c2e0bb
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        5XX:
          $ref: '#/components/responses/ServerError'
  /logoutservice:
    get:
      tags:
        - Authentication
      summary: Logout the current user
      description: |
        Logout the current user from the system
      operationId: logout
      parameters:
        - description: Setting the redirect parameter to false indicates that the service should not redirect to the login page after logging out.
          explode: true
          in: query
          name: redirect
          required: false
          schema:
            type: string
            maxLength: 5
            pattern: ^(?:tru|fals)e$
          style: form
          example:
            redirect: 'false'
            redirectURL: null
      x-codeSamples:
        - lang: Shell
          label: Curl
          source: |
            curl -b saved_cookies.txt -X GET --url 'http://localhost:8080/bonita/logoutservice?redirect=false'
      responses:
        '200':
          description: 'Success '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        5XX:
          $ref: '#/components/responses/ServerError'
  /API/living/application:
    get:
      tags:
        - Application
      summary: Finds living applications
      description: |
        Finds living applications with pagination params and filters

        - can order on `id`,`creationDate`, `createdBy`, `profileId`, `token`, `displayName`, `updatedBy`, `lastUpdateDate`, `version`, `link`
        - can search on `token`, `displayName`, `version`, `link`
        - can filter on `token`, `displayName`, `version`, `link`, `profileId`, `creationDate`, `createdBy`, `updatedBy` , `lastUpdateDate`, `userId`
      operationId: searchApplications
      parameters:
        - $ref: '#/components/parameters/pageIndex'
        - $ref: '#/components/parameters/pageCount'
        - $ref: '#/components/parameters/pageFilter'
        - $ref: '#/components/parameters/pageOrder'
        - $ref: '#/components/parameters/pageSearch'
      responses:
        '200':
          description: 'Success '
          headers:
            Content-Range:
              schema:
                type: integer
                format: int64
              description: The total number of matching items
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Application'
              example:
                - id: '306'
                  link: 'true'
                  creationDate: '1411548289900'
                  icon: ''
                  createdBy": '1'
                  profileId: '2'
                  description: My application link description
                  token: myadvapp
                  state: ACTIVATED
                  displayName: My app link
                  updatedBy: '1'
                  visibility: ALL
                  editable: 'true'
                  lastUpdateDate: '1411548289900'
                  version: '1.0'
                - id: '305'
                  link: 'false'
                  creationDate: '1411548289900'
                  icon: ''
                  createdBy": '1'
                  profileId: '2'
                  description: My application description
                  token: myapp
                  state: DEACTIVATED
                  displayName: My app
                  updatedBy: '1'
                  visibility: ALL
                  editable: 'true'
                  lastUpdateDate: '1411548289900'
                  version: '1.0'
                  homePageId: '26'
                  themeId: '1'
                  layoutId: '3'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        5XX:
          $ref: '#/components/responses/ServerError'
    post:
      tags:
        - Application
      summary: Create a living application
      deprecated: true
      description: |
        Create a living application (legacy application or application link).

        Warning: as of 9.0.0, creating a living application using this API is deprecated.
      operationId: createApplication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplicationRequest'
        description: Partial living application description
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: 'Success '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        5XX:
          $ref: '#/components/responses/ServerError'
      x-codegen-request-body-name: body
  /API/living/application/{id}:
    get:
      tags:
        - Application
      summary: Finds a living application by ID
      description: |
        Returns a single application for the given ID
      operationId: getApplicationById
      parameters:
        - description: ID of application to return
          in: path
          name: id
          required: true
          schema:
            type: string
            maxLength: 250
            pattern: ^[A-Za-z0-9\_\-\.]{0,250}$
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: 'Success '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        5XX:
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Application
      summary: Delete a living application by ID
      description: |
        Delete a single application for the given ID
      operationId: deleteApplicationById
      parameters:
        - description: ID of application to delete
          in: path
          name: id
          required: true
          schema:
            type: string
            maxLength: 250
            pattern: ^[A-Za-z0-9\_\-\.]{0,250}$
      responses:
        '200':
          description: 'Success '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        5XX:
          $ref: '#/components/responses/ServerError'
    put:
      tags:
        - Application
      summary: Update a living application by ID
      deprecated: true
      description: |
        Update a single application for the given ID (legacy application or application link).

        Warning: as of 9.0.0, updating a living application using this API is deprecated.
      operationId: updateApplicationById
      parameters:
        - description: ID of application to return
          in: path
          name: id
          required: true
          schema:
            type: string
            maxLength: 250
            pattern: ^[A-Za-z0-9\_\-\.]{0,250}$
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationUpdateRequest'
        description: Partial living application description
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: 'Success '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        5XX:
          $ref: '#/components/responses/ServerError'
  /services/application/import:
    post:
      tags:
        - Application
      summary: Import a living application
      deprecated: true
      description: |
        Import a single application

        Warning: as of 9.0.0, importing a living application using this service is deprecated.
      operationId: importApplication
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                applicationsDataUpload:
                  type: string

# --- truncated at 32 KB (471 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bonitasoft/refs/heads/main/openapi/bonitasoft-bonita-openapi.yml