Arthur Online Workorders API

The Workorders API from Arthur Online — 29 operation(s) for workorders.

Operations 41

GET /workorders/{workorder_id}/transactions List Transactions On Workorder #
GET /workorders/{workorder_id}/certificates List Certificates On Workorder #
GET /workorders/{workorder_id}/quotes List Quotes On Workorder #
GET /workorders/{workorder_id}/quotes/{quote_id} View Quote On Workorder #
GET /workorders/{workorder_id}/invoices List Invoices On Workorder #
GET /workorders/{workorder_id}/invoices/{invoice_id} View Invoice On Workorder #
GET /workorders/{workorder_id}/assets List Assets on Workorder #
POST /workorders/{workorder_id}/assets Create Asset on Workorder #
GET /workorders/{workorder_id}/assets/{edge_id} View Asset on Workorder #
GET /workorders/{workorder_id}/conversation_recipients Get Recipients for Workorder #
GET /workorders/{workorder_id}/conversations List Conversations on Workorder #
POST /workorders/{workorder_id}/conversations Create Conversation on Workorder #
GET /workorders/{workorder_id}/notes List Notes on Workorder #
POST /workorders/{workorder_id}/notes Add Note on Workorder #
GET /workorders/{workorder_id}/notes/{edge_id} View Note on Workorder #
PUT /workorders/{workorder_id}/notes/{note_id} Update Note on Workorder #
DELETE /workorders/{workorder_id}/notes/{note_id} Delete Note on Workorder #
GET /workorders/{workorder_id}/tags List Tags on Workorder #
PUT /workorders/{workorder_id}/tags Tag Workorder #
PUT /workorders/{workorder_id}/untag Untag Workorder #
PUT /workorders/{workorder_id}/untag_all Untag All Workorder Tags #
GET /workorders/{workorder_id}/contractors List Contractors on Workorder #
GET /workorders/{workorder_id}/contractors/{contractor_id} View Contractor on Workorder #
DELETE /workorders/{workorder_id}/contractors/{contractor_id} Delete Contractor on Workorder #
GET /workorders/{workorder_id}/tenants List Tenants on Workorder #
GET /workorders/{workorder_id}/tenants/{tenant_id} View Tenant on Workorder #
GET /workorders List Workorders #
GET /workorders/{workorder_id} View Workorder #
PUT /workorders/{workorder_id} Update Workorder #
GET /properties/{property_id}/workorders List Workorders On Property #
POST /properties/{property_id}/workorders Create Workorders On Property #
GET /properties/{property_id}/workorders/{workorder_id} View Workorders On Property #
PUT /properties/{property_id}/workorders/{workorder_id} Update Workorders On Property #
GET /tenancies/{tenancy_id}/workorders List Workorders On Tenancy #
POST /tenancies/{tenancy_id}/workorders Create Workorder On Tenancy #
GET /tenancies/{tenancy_id}/workorders/{workorder_id} View Workorder On Tenancy #
PUT /tenancy/{tenancy_id}/workorders/{workorder_id} Update Workorder On Tenancy #
GET /units/{unit_id}/workorders List Workorders On Unit #
POST /units/{unit_id}/workorders Create Workorders On Unit #
GET /units/{unit_id}/workorders/{workorder_id} View Workorders On Unit #
PUT /units/{unit_id}/workorders/{workorder_id} Update Workorders On Unit #

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/arthur-online-workorders-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

arthur-online-workorders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Arthur Online Workorders API
  version: 2.0.0
  contact:
    name: Arthur Online API Support
    url: https://support.arthuronline.co.uk/
  termsOfService: https://www.arthuronline.co.uk/terms-and-conditions/
  x-derived-by: API Evangelist enrichment pipeline
  x-derived-date: '2026-07-26'
  x-derived-from: collections/arthur-online.postman_collection.json
  description: 'Operations tagged Workorders across 4 of this provider''s published API definitions: arthur-online-maintenance-openapi.yml, arthur-online-properties-openapi.yml, arthur-online-tenancies-openapi.yml, arthur-online-units-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.arthuronline.co.uk/v2
  description: Arthur API v2 production
security:
- arthurOAuth: []
tags:
- name: Workorders
paths:
  /workorders/{workorder_id}/transactions:
    get:
      operationId: listTransactionsOnWorkorder
      summary: List Transactions On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - name: statement
        in: query
        required: false
        schema:
          type: string
        description: "Filters the transactions by statement. The available options are tenant , tenant-deposit , property-owner , \n property-owner-consolidated , contractor , tenancy-closing-statement , late-rents , contingency-statement , invoices"
      - name: status
        in: query
        required: false
        schema:
          type: string
        description: The status of the transaction. The available options are paid , unpaid , partpaid , outstanding , or overdue . Use this parameter to filter transactions based on their payment status.
      - name: date_from
        in: query
        required: false
        schema:
          type: string
        description: Filters the transactions by the date, starting from the specified date. Use the format yyyy-mm-dd to input the date.
      - name: date_to
        in: query
        required: false
        schema:
          type: string
        description: Filters the transactions by the date, up to the specified date. Use the format yyyy-mm-dd to input the date.
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: 'This retrieves a list of transactions for a Workorder .


        See available filters below to customize the list of transactions returned.'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/certificates:
    get:
      operationId: listCertificatesOnWorkorder
      summary: List Certificates On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of certificates associated with the given workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/quotes:
    get:
      operationId: listQuotesOnWorkorder
      summary: List Quotes On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of quotes associated with the given Workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/quotes/{quote_id}:
    get:
      operationId: viewQuoteOnWorkorder
      summary: View Quote On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - name: quote_id
        in: path
        required: true
        description: Arthur quote id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: 'This API endpoint retrieves the details of a single quote, identified by its unique quote_id .


        Use this endpoint to view the specific details of a quote on a workorder.'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/invoices:
    get:
      operationId: listInvoicesOnWorkorder
      summary: List Invoices On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of contractor invoices associated with the given Workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/invoices/{invoice_id}:
    get:
      operationId: viewInvoiceOnWorkorder
      summary: View Invoice On Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - name: invoice_id
        in: path
        required: true
        description: Arthur invoice id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: 'This API endpoint retrieves the details of a single invoice, identified by its unique  invoice_id .


        Use this endpoint to view the specific details of a contractor invoice on a workorder.'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/assets:
    get:
      operationId: listAssetsOnWorkorder
      summary: List Assets on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of assets associated with the given workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createAssetOnWorkorder
      summary: Create Asset on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "Use this endpoint to create a new asset related to an  workorder . The API will return the saved data.\n\nSupported Fields \n The following fields are supported for the request body\n\nField \n Example \n Type \n Required? \n\nasset_type \n image \n String \n No \n\nname \n inventory \n String \n No \n\nshare_manager \n true \n Boolean \n No \n\nshare_tenant \n false \n Boolean \n No \n\nshare_contractor \n true \n Boolean \n No \n\nshare_owner \n true \n Boolean \n No \n\nfile \n base64 \n String \n Yes \n\nmime_type \n application/pdf \n String \n Yes \n\nfile_name \n inventory \n String \n Yes"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                asset_type:
                  type: string
                  example: image
                name:
                  type: string
                  example: inventory
                share_manager:
                  type: boolean
                  example: true
                share_tenant:
                  type: boolean
                  example: false
                share_contractor:
                  type: boolean
                  example: true
                share_owner:
                  type: boolean
                  example: true
                file:
                  type: string
                  example: base64
                mime_type:
                  type: string
                  example: application/pdf
                file_name:
                  type: string
                  example: inventory
              required:
              - file
              - mime_type
              - file_name
            example:
              asset_type: image
              name: name of asset
              share_manager: true
              share_tenant: true
              share_owner: true
              share_contractor: true
              file: pdf file converted to base64 string
              mime_type: application/pdf
              file_name: inventory
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/assets/{edge_id}:
    get:
      operationId: viewAssetOnWorkorder
      summary: View Asset on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: 'This API endpoint retrieves the details of a single asset, identified by its unique  asset_id .


        Use this endpoint to view the specific details of an asset on a workorder.'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/conversation_recipients:
    get:
      operationId: getRecipientsForWorkorder
      summary: Get Recipients for Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: This endpoint retrieves a list of conversation recipients on a workorder record, identified by its unique  workorder_id .
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/conversations:
    get:
      operationId: listConversationsOnWorkorder
      summary: List Conversations on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of conversations on a workorder, identified by its unique  workorder_id .
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createConversationOnWorkorder
      summary: Create Conversation on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "Use this endpoint to create a new conversation on a workorder record. The API will return the saved data and a unique Conversation ID.\n\nSupported Fields \n The following fields are supported for the request body\n\nField \n Example \n Type \n Required? \n\nmessage \n It's done \n String \n Yes \n\nsubject \n Meeting tomorrow \n String \n Yes \n\nperson_ids \n ['1','2'] \n Array(String) \n Yes"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  example: It's done
                subject:
                  type: string
                  example: Meeting tomorrow
                person_ids:
                  type: array
                  items:
                    type: string
                  example: '[''1'',''2'']'
              required:
              - message
              - subject
              - person_ids
            example:
              message: Please clean the house on friday.
              subject: House duties
              person_ids:
              - '21'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/notes:
    get:
      operationId: listNotesOnWorkorder
      summary: List Notes on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of  notes  associated with the given workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: addNoteOnWorkorder
      summary: Add Note on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "Use this endpoint to create a new note record for a  workorder . The API will return the saved data and a unique note ID.\n\nSupported Fields \n The following fields are supported for the request body\n\nField \n Example \n Type \n Required? \n\ncontent \n Moving away \n String \n Yes \n\ntags \n ['one','two'] \n Array(String) \n No"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  example: Moving away
                tags:
                  type: array
                  items:
                    type: string
                  example: '[''one'',''two'']'
              required:
              - content
            example:
              content: Remember this note
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/notes/{edge_id}:
    get:
      operationId: viewNoteOnWorkorder
      summary: View Note on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: This API endpoint retrieves the details of a single workorder  note , identified by its unique  id
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/notes/{note_id}:
    put:
      operationId: updateNoteOnWorkorder
      summary: Update Note on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - name: note_id
        in: path
        required: true
        description: Arthur note id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "This endpoint updates an existing note on a workorder using the same fields as the 'Add Note' endpoint. The API will return the updated data for the note in the response.\n\nSupported Fields \n The following fields are supported for the request body\n\nField \n Example \n Type \n Required? \n\ncontent \n Moving away \n String \n No \n\ntags \n ['one','two'] \n Array(String) \n No"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  example: Moving away
                tags:
                  type: array
                  items:
                    type: string
                  example: '[''one'',''two'']'
            example:
              content: Updated Note
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteNoteOnWorkorder
      summary: Delete Note on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - name: note_id
        in: path
        required: true
        description: Arthur note id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      description: This endpoint deletes an existing workorder note using the note  id .
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/tags:
    get:
      operationId: listTagsOnWorkorder
      summary: List Tags on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of tags associated with the given Workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  data:
                    type: object
              example:
                status: 200
                data:
                - id: 123
                  name: tag one
                  color: sky
                - id: 123
                  name: tag two
                  color: lightgreen
                - id: 123
                  name: tag three
                  color: purple
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: tagWorkorder
      summary: Tag Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "Use this endpoint to create a new tag record for a  workorder . The API will return the saved data and a unique tag ID.\n\nSupported Fields \n The following fields are supported for the request body\nTag field should be a valid tag ID or name.\n\nField \n Example \n Type \n Required? \n\ntag \n [\"123\"] \n Array(String) \n Yes"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tag:
                  type: array
                  items:
                    type: string
                  example: '["123"]'
              required:
              - tag
            example:
              tag:
              - '1234'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/untag:
    put:
      operationId: untagWorkorder
      summary: Untag Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: "Use this endpoint to unassign tag record from a  workorder . The API will return the saved data. Tag field should be a valid tag ID or name.\n\nSupported Fields \n The following fields are supported for the request body\n\nField \n Example \n Type \n Required? \n\ntag \n \"1234\" \n String \n Yes"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tag:
                  type: string
                  example: '"1234"'
              required:
              - tag
            example:
              tag: '1234'
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/untag_all:
    put:
      operationId: untagAllWorkorderTags
      summary: Untag All Workorder Tags
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Strict'
      description: Use this endpoint to unassign all tags from the  workorder .
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://api.arthuronline.co.uk/v2
      description: Arthur API v2 production
  /workorders/{workorder_id}/contractors:
    get:
      operationId: listContractorsOnWorkorder
      summary: List Contractors on Workorder
      tags:
      - Workorders
      parameters:
      - name: workorder_id
        in: path
        required: true
        description: Arthur workorder id.
        schema:
          type: integer
      - $ref: '#/components/parameters/EntityId'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/Direction'
      description: This endpoint retrieves a list of  contractors  associated with the given workorder ID.
      responses:
        '200':
          description: The request was completed successfully without errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  pagination:
                    $ref: '#/components/schemas/Pagination'
              example:
                status: 200
                data:
                - id: 574490
                  entity_id: 85085
                  title: Mr
                  name: API Support
                  address: 32 Temple Fortune Lane, 

# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/arthur-online/refs/heads/main/openapi/arthur-online-workorders-api-openapi.yml