ProcessMaker Processes API

BPMN 2.0 process design and management

OpenAPI Specification

processmaker-processes-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: ProcessMaker Platform RESTful Environment Variables Processes API
  description: 'The ProcessMaker Platform RESTful API provides programmatic access to all platform functionality including process design, case management, task handling, user management, and enterprise integrations. The API is BPMN 2.0 compliant and follows the OpenAPI specification with interactive Swagger UI documentation auto-generated by Swagger/L5-Swagger.

    '
  version: 1.0.0
  contact:
    email: info@processmaker.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://{organization}.processmaker.net/api/1.0
  description: ProcessMaker Cloud instance
  variables:
    organization:
      default: myorg
      description: Your ProcessMaker organization subdomain
security:
- bearerAuth: []
tags:
- name: Processes
  description: BPMN 2.0 process design and management
paths:
  /processes:
    get:
      tags:
      - Processes
      summary: Returns all processes that the user has access to
      operationId: getProcesses
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/order_by'
      - $ref: '#/components/parameters/order_direction'
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/status'
      - $ref: '#/components/parameters/include'
      - name: simplified_data_for_selector
        in: query
        description: Return simplified data for process selector UI
        schema:
          type: boolean
      responses:
        '200':
          description: List of processes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessCollection'
    post:
      tags:
      - Processes
      summary: Save a new process
      operationId: createProcess
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessEditable'
      responses:
        '201':
          description: Process created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '422':
          $ref: '#/components/responses/422'
  /processes/{processId}:
    get:
      tags:
      - Processes
      summary: Get single process by ID
      operationId: getProcessById
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/include'
      responses:
        '200':
          description: Single process resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '404':
          $ref: '#/components/responses/404'
    put:
      tags:
      - Processes
      summary: Update a process
      operationId: updateProcess
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessEditable'
      responses:
        '200':
          description: Updated process resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
    delete:
      tags:
      - Processes
      summary: Delete a process
      operationId: deleteProcess
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: No content
        '404':
          $ref: '#/components/responses/404'
  /processes/{processId}/draft:
    put:
      tags:
      - Processes
      summary: Update a draft process
      operationId: updateDraftProcess
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessEditable'
      responses:
        '200':
          description: Updated draft process resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
  /processes/{processId}/restore:
    put:
      tags:
      - Processes
      summary: Restore an inactive process
      operationId: restoreProcess
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Restored process resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
  /processes/{processId}/export:
    post:
      tags:
      - Processes
      summary: Export a single process by ID and return a URL to download it
      operationId: exportProcess
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Export URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
  /processes/import:
    post:
      tags:
      - Processes
      summary: Import a new process
      operationId: importProcess
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: Process import result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessImport'
  /processes/import/validation:
    post:
      tags:
      - Processes
      summary: Validate a process import file
      operationId: validateImport
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: Import validation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessImport'
  /processes/{processId}/start_events:
    get:
      tags:
      - Processes
      summary: Get start events of a process by ID
      operationId: getStartEventsProcessById
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/include'
      responses:
        '200':
          description: Collection of process start events
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
  /processes/{processId}/bpmn:
    get:
      tags:
      - Processes
      summary: Download the BPMN definition of a process
      operationId: processBpmn
      parameters:
      - name: processId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: BPMN download URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
  /start_processes:
    get:
      tags:
      - Processes
      summary: Returns the list of processes that the user can start
      operationId: startProcesses
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/order_by'
      - $ref: '#/components/parameters/order_direction'
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/include'
      - name: without_event_definitions
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Processes with start events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessCollection'
  /process_events/{process_id}:
    post:
      tags:
      - Processes
      summary: Start a new process
      operationId: triggerStartEvent
      parameters:
      - name: process_id
        in: path
        required: true
        schema:
          type: integer
      - name: event
        in: query
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: Optional request data
      responses:
        '200':
          description: New process request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessRequest'
components:
  responses:
    '422':
      description: Unprocessable Entity
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
              errors:
                type: object
    '404':
      description: Not Found
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
  schemas:
    ProcessImport:
      type: object
      properties:
        status:
          type: object
        assignable:
          type: array
          items:
            type: object
        process:
          $ref: '#/components/schemas/Process'
    ProcessEditable:
      type: object
      required:
      - name
      - status
      - bpmn
      - process_category_id
      properties:
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
        bpmn:
          type: string
          description: BPMN 2.0 XML string
        process_category_id:
          type: integer
        manager_id:
          type: integer
        cancel_screen_id:
          type: integer
        request_detail_screen_id:
          type: integer
        is_valid:
          type: boolean
        warnings:
          type: array
          items:
            type: string
    ProcessCollection:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Process'
        meta:
          $ref: '#/components/schemas/Metadata'
    ProcessRequest:
      allOf:
      - $ref: '#/components/schemas/ProcessRequestEditable'
      - type: object
        properties:
          id:
            type: integer
          process_id:
            type: integer
          user_id:
            type: integer
          process_collaboration_id:
            type: integer
            nullable: true
          callable_id:
            type: string
          created_at:
            type: string
            format: date-time
          updated_at:
            type: string
            format: date-time
          completed_at:
            type: string
            format: date-time
            nullable: true
    Process:
      allOf:
      - $ref: '#/components/schemas/ProcessEditable'
      - type: object
        properties:
          id:
            type: integer
          user_id:
            type: integer
          created_at:
            type: string
            format: date-time
          updated_at:
            type: string
            format: date-time
          deleted_at:
            type: string
            format: date-time
            nullable: true
    ProcessRequestEditable:
      type: object
      properties:
        status:
          type: string
          enum:
          - ACTIVE
          - COMPLETED
          - ERROR
          - CANCELED
        data:
          type: object
        name:
          type: string
    Metadata:
      type: object
      properties:
        total:
          type: integer
        count:
          type: integer
        per_page:
          type: integer
        current_page:
          type: integer
        total_pages:
          type: integer
        sort_by:
          type: string
        sort_order:
          type: string
        search:
          type: string
  parameters:
    status:
      name: status
      in: query
      description: Filter by status - ACTIVE or INACTIVE
      schema:
        type: string
        enum:
        - ACTIVE
        - INACTIVE
    per_page:
      name: per_page
      in: query
      schema:
        type: integer
        default: 10
    filter:
      name: filter
      in: query
      description: 'Filter results by string. Searches Name, Description, and Status. Status must match exactly. Others can be a substring.

        '
      schema:
        type: string
    order_by:
      name: order_by
      in: query
      description: Field to order results by
      schema:
        type: string
    include:
      name: include
      in: query
      description: Include data from related models in payload. Comma separated list.
      schema:
        type: string
        default: ''
    order_direction:
      name: order_direction
      in: query
      schema:
        type: string
        enum:
        - asc
        - desc
        default: asc
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT