Erply workorder API

The workorder API from Erply — 14 operation(s) for workorder.

Operations 16

GET /api/v1/workorder Look up workorder records
POST /api/v1/workorder Add a new workorder record
DELETE /api/v1/workorder/{workorderId} Delete one workorder record
PATCH /api/v1/workorder/{workorderId} Update workorder record
GET /api/v1/workorder/{workorderId}/backup Look up workorder backups
POST /api/v1/workorder/{workorderId}/cancel Mark the workorder as cancelled
POST /api/v1/workorder/{workorderId}/confirm Mark the workorder as confirmed
POST /api/v1/workorder/{workorderId}/copy Create a copy of a workorder
POST /api/v1/workorder/{workorderId}/device-received Mark the device associated with the workorder as received
POST /api/v1/workorder/{workorderId}/device-returned Mark the device associated with the workorder as returned
POST /api/v1/workorder/{workorderId}/order Change the order of one workorder within the grouping
POST /api/v1/workorder/{workorderId}/prepay Create a prepayment document based on the specified workorder and optionally add payments to it
POST /api/v1/workorder/{workorderId}/quote Generates a quote from the workorder
POST /api/v1/workorder/{workorderId}/settle Settle workorders. Generate sales document and make payments
POST /api/v1/workorder/{workorderId}/uncancel Mark the workorder as not cancelled
POST /api/v1/workorder/{workorderId}/unconfirm Mark the workorder as not confirmed

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/erply-workorder-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

erply-workorder-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: "\n\n## Overview\n\n\n\nThis application offers an API for managing assignments and tasks.\n\n\n\nGraphQL endpoint for the same API is [also available](/graph)\n\n\n\n<details><summary>Authentication</summary>\n\n\n\n> \n\n> Authenticate using your Erply credentials and get a sessionKey. This sessionKey and your Erply clientCode must be provided in the HTTP headers of every request. You do not have to authenticate against this API - valid Erply sessionKey-s from other sources are also acceptable. To authenticate using this API, use the `POST /api/v1/auth` endpoint.\n\n>\n\n</details>\n\n"
  title: assignments Assortment Workorder API
  contact: {}
  version: 2.36.5
tags:
- name: workorder
paths:
  /api/v1/workorder:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Look up workorder records
      parameters:
      - description: Record ID-s
        name: id
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Search by record number, document number, title, customer name, email, device serial, registration, make and model
        name: searchPhrase
        in: query
        schema:
          type: string
      - description: Workorder/Record number
        name: workorderNo
        in: query
        schema:
          type: string
      - description: Document number
        name: documentNo
        in: query
        schema:
          type: integer
      - description: Reference numbers
        name: referenceNos
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: If templates or regular workorders should be returned. By default returns both
        name: isTemplate
        in: query
        schema:
          type: boolean
      - description: Record root entity (workorder, raji)
        name: entity
        in: query
        schema:
          type: string
      - description: Record types to return. If undefined, defaults to 'workorder'
        name: types
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Record title. Uses case insensitive partial matching
        name: title
        in: query
        schema:
          type: string
      - description: Record Group ID-s that must match
        name: groupIds
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Group ID field should be filled or empty
        name: groupIdNil
        in: query
        schema:
          type: boolean
      - description: Record Parent ID-s that must match
        name: parentIds
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Parent ID field should be filled or empty
        name: parentIdNil
        in: query
        schema:
          type: boolean
      - description: Record ID-s for which child objects must be retrieved recursively
        name: childrenOfIds
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Record ID-s for which parent objects must be retrieved recursively
        name: parentsOfIds
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Record priorities that must match
        name: priorities
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Warehouse ids
        name: warehouseId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Customer ids
        name: customerId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Contact ids
        name: contactId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Device ids
        name: deviceId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Record state codes (draft, confirmed, checked_in, checked_out, in_progress, blocked, done, cancelled)
        name: state
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Record transactional state codes (preparation, estimated, prepaid, invoiced, paid)
        name: tranState
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Record task scheduled state codes (some_scheduled, nothing_scheduled)
        name: taskSchedState
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Record row product stock state codes (parts_available, parts_not_ordered, need_po_finalization, awaiting_parts)
        name: productStockState
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: ID-s of employees who created the record
        name: createdById
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Search for workorders created after the specified time (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)
        name: createdAtStart
        in: query
        schema:
          type: string
      - description: "\tSearch for workorders created before the specified time (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)"
        name: createdAtEnd
        in: query
        schema:
          type: string
      - description: ID-s of employees who updated the record
        name: updatedById
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: ID-s of employees who marked the linked device as received
        name: receivedById
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Device received time range lower bound (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)
        name: receivedAtStart
        in: query
        schema:
          type: string
      - description: Device received time range upper bound (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)
        name: receivedAtEnd
        in: query
        schema:
          type: string
      - description: Received or not received records
        name: isReceived
        in: query
        schema:
          type: boolean
      - description: ID-s of employees who marked the linked device as returned
        name: returnedById
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - description: Device returned time range lower bound (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)
        name: returnedAtStart
        in: query
        schema:
          type: string
      - description: Device returned time range upper bound (yyyy-mm-ddThh:mm:ssZ or UNIX timestamp)
        name: returnedAtEnd
        in: query
        schema:
          type: string
      - description: Returned or not returned records
        name: isReturned
        in: query
        schema:
          type: boolean
      - description: Confirmed or not confirmed records
        name: isConfirmed
        in: query
        schema:
          type: boolean
      - description: Cancelled or not cancelled records
        name: isCancelled
        in: query
        schema:
          type: boolean
      - description: Search for workorders with linked prepayment sales documents
        name: hasDocPrepay
        in: query
        schema:
          type: boolean
      - description: Search for workorders with linked offer sales documents
        name: hasDocOffer
        in: query
        schema:
          type: boolean
      - description: Search for workorders with linked invoice sales documents
        name: hasDocInvoice
        in: query
        schema:
          type: boolean
      - description: Search for workorders with linked credit documents
        name: hasDocCredit
        in: query
        schema:
          type: boolean
      - description: Search for workorders which have been paid in full
        name: isFullyPaid
        in: query
        schema:
          type: boolean
      - description: Label type
        name: labelType
        in: query
        schema:
          type: string
      - description: Labels under the specified labelType that must match
        name: label
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: 'Sorting order. Supported values are: `id`, `workorderNo`, `referenceNo`, `netTotal`, `vatTotal`, `total`, `receivedAt`, `returnedAt`, `createdAt`, `updatedAt`, `registration`, `serial`, `brand`, `model`, `custFirstname`, `custName`, `stateCode`, `tranStateCode`, `priority`, `receiver`, `creator`, `type`'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkorderResponse'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Add a new workorder record
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkorderRequest'
        description: Workorder record
        required: true
  /api/v1/workorder/{workorderId}:
    delete:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: Delete one workorder record
      tags:
      - workorder
      summary: Delete one workorder record
      parameters:
      - description: Record id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    patch:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Update workorder record
      parameters:
      - description: Record id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkorderRequest'
        description: Workorder record
        required: true
  /api/v1/workorder/{workorderId}/backup:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: Look up workorder backups
      tags:
      - workorder
      summary: Look up workorder backups
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      - description: Search by associated sales document numbers
        name: docNo
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: Sorting order. Supported values [backupId workorderId workorderNo createdAt]
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BackupResponse'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/cancel:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the workorder as cancelled
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/confirm:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the workorder as confirmed
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/copy:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Create a copy of a workorder
      parameters:
      - description: Record id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/model.WorkorderCopyRequest'
        description: Workorder record
        required: true
  /api/v1/workorder/{workorderId}/device-received:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the device associated with the workorder as received
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/device-returned:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the device associated with the workorder as returned
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/order:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: Allows changing the order of workorders. A single record can be moved either in front of any other one in the same grouping, or to the end of the list
      tags:
      - workorder
      summary: Change the order of one workorder within the grouping
      parameters:
      - description: Workorder id that must be moved to new position
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkorderOrderRequest'
        description: Reorder parameter `inFrontOfId` defines the record in front of which the moved workorder should be placed
        required: true
  /api/v1/workorder/{workorderId}/prepay:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Create a prepayment document based on the specified workorder and optionally add payments to it
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderDocResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/model.WorkorderPrepayRequest'
        description: Request body
        required: true
  /api/v1/workorder/{workorderId}/quote:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Generates a quote from the workorder
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderDocResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/settle:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Settle workorders. Generate sales document and make payments
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderDocResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/model.WorkorderSettleRequest'
        description: Request body
        required: true
  /api/v1/workorder/{workorderId}/uncancel:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the workorder as not cancelled
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /api/v1/workorder/{workorderId}/unconfirm:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - workorder
      summary: Mark the workorder as not confirmed
      parameters:
      - description: Workorder id
        name: workorderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkorderResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
components:
  schemas:
    BackupResponse:
      type: object
      properties:
        backupId:
          type: integer
          example: 1
        createdAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        createdById:
          type: integer
          example: 1
        docNo:
          description: Number of the sales document for which this backup was created
          type: string
          example: '123'
        eventName:
          $ref: '#/components/schemas/core.Translatable'
        eventType:
          type: string
          example: doc_quote_created
        workorderId:
          type: integer
          example: 1
        workorderNo:
          type: string
          example: '1'
    model.WorkorderPrepayRequest:
      type: object
      properties:
        payment:
          type: array
          items:
            $ref: '#/components/schemas/WorkorderDocRequestPayment'
        rounding:
          description: Specify rounding amount (eg. 0.02 or -0.04). Rounding is applied to invoice total with tax, after all other calculations.
          type: number
        salepointId:
          type: integer
    WorkorderDocResponse:
      type: object
      properties:
        cancelledAt:
          type: string
        cancelledById:
          type: integer
        confirmedAt:
          type: string
        confirmedById:
          type: integer
        contactId:
          type: integer
        createdAt:
          type: string
        createdById:
          type: integer
        customerId:
          type: integer
        data:
          type: object
        deviceId:
          type: integer
        deviceUse:
          description: Stored in device_log table
          type: integer
        emsThreadId:
          type: integer
        entity:
          type: string
        hasDocCredit:
          type: boolean
        id:
          type: integer
        labels:
          type: array
          items:
            $ref: '#/components/schemas/LabelResponse'
        netTotal:
          type: number
        noteCount:
          type: integer
        order:
          type: integer
        paid:
          type: number
        parentId:
          type: integer
        paymentId:
          type: array
          items:
            type: integer
        priority:
          type: string
        productStockState:
          type: string
        progress:
          type: number
        receivedAt:
          type: string
        receivedById:
          type: integer
        referenceNo:
          type: string
        returnedAt:
          type: string
        returnedById:
          type: integer
        salepointId:
          type: integer
        salesDoc:
          $ref: '#/components/schemas/SalesDocument'
        salesDocId:
          type: integer
        state:
          type: string
        taskScheduledState:
          type: string
        taxExempt:
          type: boolean
        templateId:
          type: integer
        title:
          type: string
        total:
          type: number
        transactionalState:
          type: string
        type:
          type: string
        updatedAt:
          type: string
        updatedById:
          type: integer
        vatTotal:
          type: number
        warehouseId:
          type: integer
        workorderGroupId:
          type: integer
        workorderNo:
          type: string
    core.Translatable:
      type: object
      properties:
        ar:
          type: string
          example: ' '
        cs:
          type: string
          example: ' '
        da:
          type: string
          example: ' '
        de:
          type: string
          example: ' '
        default:
          type: string
          example: ' '
        el:
          type: string
          example: ' '
        en:
          type: string
          example: ' '
        es:
          type: string
          example: ' '
        et:
          type: string
          example: ' '
        fi:
          type: string
          example: ' '
        fo:
          type: string
          example: ' '
        fr:
          type: string
          example: ' '
        it:
          type: string
          example: ' '
        lt:
          type: string
          example: ' '
        lv:
          type: string
          example: ' '
        nl:
          type: string
          example: ' '
        'no':
          type: string
          example: ' '
        pl:
          type: string
          example: ' '
        ru:
          type: string
          example: ' '
        sv:
          type: string
          example: ' '
        th:
          type: string
          example: ' '
        tr:
          type: string
          example: ' '
        vi:
          type: string
          example: ' '
        zh_Hans:
          type: string
          example: ' '
        zh_Hant:
          type: string
          example: ' '
    WorkorderResponse:
      type: object
      properties:
        cancelledAt:
          type: string
        cancelledById:
          type: integer
        confirmedAt:
          type: string
        confirmedById:
          type: integer
        contactId:
          type: integer
        createdAt:
          type: string
        createdById:
          type: integer
        customerId:
          type: integer
        data:
          type: object
        deviceId:
          type: integer
        deviceUse:
          description: Stored in device_log table
          type: integer
        emsThreadId:
          type: integer
        entity:
          type: string
        hasDocCredit:
          type: boolean
        id:
          type: integer
        labels:
          type: array
          items:
            $ref: '#/components/schemas/LabelResponse'
        netTotal:
          type: number
        noteCount:
          type: integer
        order:
          type: integer
        paid:
          type: number
        parentId:
          type: integer
        priority:
          type: string
        productStockState:
          type: string
        progress:
          type: number
        receivedAt:
          type: string
        receivedById:
          type: integer
        referenceNo:
          type: string
        returnedAt:
          type: string
        returnedById:
          type: integer
        salepointId:
          type: integer
        state:
          type: string
        taskScheduledState:
          type: string
        taxExempt:
          type: boolean
        templateId:
          type: integer
        title:
          type: string
        total:
          type: number
        transactionalState:
          type: string
        type:
          type: string
        updatedAt:
          type: string
        updatedById:
          type: integer
        vatTotal:
          type: number
        warehouseId:
          type: integer
        workorderGroupId:
          type: integer
        workorderNo:
          type: string
    WorkorderDocRequestPayment:
      type: object
      properties:
        aid:
          type: string
        applicationLabel:
          type: string
        attributeAuthCode:
          type: string
        attributeRefNo:
          type: string
        cardHolder:
          type: string
        cardNumber:
          type: string
        cardType:
          type: string
        cashChange:
          type: number
        cashPaid:
          type: number
        certificateBalance:
          type: string
        cryptogram:
          type: string
        cryptogramType:
          type: string
        currencyCode:
          description: EUR, USD
          type: string
        entryMethod:
          type: string
        expirationDate:
          type: string
        info:
    

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