Fulcrumpro Change Order API

The Change Order API from Fulcrumpro — 3 operation(s) for change order.

Operations 5

POST /api/change-orders Create a change order. #
DELETE /api/change-orders/{id} Delete a change order and the tasks filed under it, with their attachments. #
GET /api/change-orders/{id} Get a change order by id, including the sales orders, jobs and quotes it… #
PUT /api/change-orders/{id} Update a change order. #
POST /api/change-orders/list Finds change orders based on search parameters. #

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/fulcrumpro:fulcrumpro-change-order-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

fulcrumpro-change-order-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fulcrum Public Change Order API
  version: v1
servers:
- url: https://api.fulcrumpro.com
tags:
- name: Change Order
paths:
  /api/change-orders:
    post:
      tags:
      - Change Order
      summary: Create a change order.
      operationId: CreateChangeOrder
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
        required: true
      responses:
        '200':
          description: The created change order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
        '400':
          description: Validation issues with input
      x-c4-required-permissions:
      - Orders-SalesOrders-Edit Sales Order
  /api/change-orders/{id}:
    delete:
      tags:
      - Change Order
      summary: Delete a change order and the tasks filed under it, with their attachments.
      operationId: DeleteChangeOrder
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
        '204':
          description: Change order did not exist
        '400':
          description: The change order has already been applied
      x-c4-required-permissions:
      - Orders-SalesOrders-Edit Sales Order
    get:
      tags:
      - Change Order
      summary: Get a change order by id, including the sales orders, jobs and quotes it…
      operationId: GetChangeOrder
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The change order for the given id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
        '404':
          description: Change order did not exist
      x-c4-required-permissions:
      - Orders-SalesOrders-View Sales Order
    put:
      tags:
      - Change Order
      summary: Update a change order.
      operationId: UpdateChangeOrder
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ChangeOrderSaveDto'
        required: true
      responses:
        '200':
          description: The updated change order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ChangeOrderDto'
        '400':
          description: Validation issues with input
        '404':
          description: Change order did not exist
      x-c4-required-permissions:
      - Orders-SalesOrders-Edit Sales Order
  /api/change-orders/list:
    post:
      tags:
      - Change Order
      summary: Finds change orders based on search parameters.
      operationId: ListChangeOrders
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: 'Number of records to skip. Defaults to 0. Combine with FulcrumProduct.PublicApi.Dto.Common.PagingDto.Take to page

          through a result set larger than one page.'
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: 'Number of records to return. Validation accepts 0 through 5000, but `0` is not a

          page size and what an endpoint does with it varies, so send a value from 1 to 5000.


          Two cases differ. A request that supplies paging but leaves this field out takes this

          field''s default of <b>50</b>. A request that supplies no paging at all is

          endpoint-specific — some define their own fallback — so it does not reliably mean any

          particular number of records. Either way the response says nothing about records it

          did not return, so send this explicitly whenever the size of the answer matters.

          Endpoints returning a paged envelope report `totalCount` and `hasNextPage`

          alongside the records; endpoints returning a bare array report neither, so page those

          with FulcrumProduct.PublicApi.Dto.Common.PagingDto.Skip until a page comes back shorter than the value requested.'
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ChangeOrdersListParameters'
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrdersListParameters'
          text/json:
            schema:
              $ref: '#/components/schemas/ChangeOrdersListParameters'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ChangeOrdersListParameters'
      responses:
        '200':
          description: The matching change orders
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoChangeOrderSummaryDto'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoChangeOrderSummaryDto'
        '400':
          description: Validation issues with input
      x-c4-required-permissions:
      - Orders-SalesOrders-View Sales Order
components:
  schemas:
    CommonReferenceDto:
      type: object
      properties:
        id:
          maxLength: 24
          minLength: 24
          type:
          - string
          - 'null'
          description: Unique Id associated to the referenced object
        name:
          maxLength: 200
          minLength: 1
          type:
          - string
          - 'null'
          description: Descriptive name associated to the object
      additionalProperties: false
      description: Represents a reference to a document in a DB collection
    DtoPagedResultDtoChangeOrderSummaryDto:
      required:
      - data
      - hasNextPage
      - hasPreviousPage
      - page
      - pageSize
      - totalCount
      - totalPages
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ChangeOrderSummaryDto'
          description: The data
        page:
          type: integer
          description: The 1-indexed page
          format: int32
          readOnly: true
        pageSize:
          type: integer
          description: The page size
          format: int32
          readOnly: true
        totalCount:
          type: integer
          description: The total count of records
          format: int32
        totalPages:
          type: integer
          description: The total pages
          format: int32
          readOnly: true
        hasPreviousPage:
          type: boolean
          description: True if there is a previous page
          readOnly: true
        hasNextPage:
          type: boolean
          description: True if there is a next page
          readOnly: true
      additionalProperties: false
      description: Paged result
    ChangeOrderEnumImpactedRecordDocumentTypeEnum:
      enum:
      - salesOrder
      - job
      - quote
      type: string
      description: The kind of document a change order impacts.
    CommonEnumSortDirectionEnum:
      enum:
      - ascending
      - descending
      type: string
      description: Specify sorting direction.
    ChangeOrderSummaryDto:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: The id of the change order
        number:
          type: integer
          description: The change order's sequential number, unique within the tenant and assigned server-side
          format: int32
        customer:
          $ref: '#/components/schemas/CommonReferenceDto'
        originalRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        newRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        requestedUtc:
          type:
          - string
          - 'null'
          description: When the change was requested (UTC). Defaults to the moment of creation when not supplied
          format: date-time
        dueDateUtc:
          type:
          - string
          - 'null'
          description: When the change order is due (UTC), or null when it carries no date
          format: date-time
        approvedUtc:
          type:
          - string
          - 'null'
          description: When the change order was approved (UTC), or null when it has not been
          format: date-time
        completedUtc:
          type:
          - string
          - 'null'
          description: 'When the change order was completed (UTC). Stamped server-side when status moves to Completed

            without one supplied'
          format: date-time
        status:
          $ref: '#/components/schemas/ChangeOrderStatusEnum'
        detail:
          type:
          - string
          - 'null'
          description: What the change is
        disposition:
          $ref: '#/components/schemas/CommonReferenceDto'
        notificationsEnabled:
          type:
          - boolean
          - 'null'
          description: Whether completing a task on this change order tells the owners of the next step
        createdBy:
          $ref: '#/components/schemas/CommonReferenceDto'
        createdUtc:
          type:
          - string
          - 'null'
          description: When the change order was created (UTC). Read-only
          format: date-time
        modifiedBy:
          $ref: '#/components/schemas/CommonReferenceDto'
        modifiedUtc:
          type:
          - string
          - 'null'
          description: When the change order was last modified (UTC); supports incremental sync. Read-only
          format: date-time
      additionalProperties: false
      description: 'A change order row returned by the change order list: the header, without the impacted records.'
    ChangeOrdersListParameters:
      type: object
      properties:
        search:
          type:
          - string
          - 'null'
          description: 'Case-insensitive search over the customer name, the original and new revision items, and the

            detail'
        statuses:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ChangeOrderStatusEnum'
          description: Only change orders in these statuses
        customerIds:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Only change orders raised for these customers
        dispositionIds:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Only change orders carrying these dispositions
        requestedFromUtc:
          type:
          - string
          - 'null'
          description: Inclusive lower bound on requestedUtc
          format: date-time
        requestedToUtc:
          type:
          - string
          - 'null'
          description: Inclusive upper bound on requestedUtc
          format: date-time
        dueFromUtc:
          type:
          - string
          - 'null'
          description: Inclusive lower bound on dueDateUtc
          format: date-time
        dueToUtc:
          type:
          - string
          - 'null'
          description: Inclusive upper bound on dueDateUtc
          format: date-time
        createdFromUtc:
          type:
          - string
          - 'null'
          description: Inclusive lower bound on createdUtc
          format: date-time
        createdToUtc:
          type:
          - string
          - 'null'
          description: Inclusive upper bound on createdUtc
          format: date-time
        completedFromUtc:
          type:
          - string
          - 'null'
          description: Inclusive lower bound on completedUtc
          format: date-time
        completedToUtc:
          type:
          - string
          - 'null'
          description: Inclusive upper bound on completedUtc
          format: date-time
        overdue:
          type:
          - boolean
          - 'null'
          description: 'True narrows to change orders whose due date has passed and that are not Completed. False and

            omitted both apply no clause — this narrows, it does not select the complement'
        impactedDocumentId:
          type:
          - string
          - 'null'
          description: Only change orders impacting this sales order, job or quote
        revisionItemId:
          type:
          - string
          - 'null'
          description: Only change orders whose original or new revision item is this item
        modifiedAfterUtc:
          type:
          - string
          - 'null'
          description: 'Only change orders written strictly after this UTC instant. Poll with the largest

            modifiedUtc you hold to pick up creates and edits; deletions do not advance modifiedUtc'
          format: date-time
        modifiedBeforeUtc:
          type:
          - string
          - 'null'
          description: Only change orders written at or before this UTC instant
          format: date-time
      additionalProperties: false
      description: 'Filters for the change order list. All filters are optional and combine with AND semantics

        (list-valued filters match any of their values).'
    ChangeOrderItemReferenceDto:
      type: object
      properties:
        id:
          maxLength: 24
          minLength: 24
          type:
          - string
          - 'null'
          description: The id of the item revision, as returned by Item List
        name:
          maxLength: 200
          minLength: 1
          type:
          - string
          - 'null'
          description: The item's number and revision together, as the app displays it. Read-only
        number:
          type:
          - string
          - 'null'
          description: The item's number. Read-only
        revision:
          type:
          - string
          - 'null'
          description: The item's revision, or null when the item carries none. Read-only
      additionalProperties: false
      description: A reference to an item revision on a change order.
    ChangeOrderSaveDto:
      required:
      - originalRevisionItem
      type: object
      properties:
        customer:
          $ref: '#/components/schemas/CommonReferenceDto'
        originalRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        newRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        requestedUtc:
          type:
          - string
          - 'null'
          description: When the change was requested (UTC). Defaults to the moment of creation when not supplied
          format: date-time
        dueDateUtc:
          type:
          - string
          - 'null'
          description: When the change order is due (UTC)
          format: date-time
        approvedUtc:
          type:
          - string
          - 'null'
          description: When the change order was approved (UTC)
          format: date-time
        completedUtc:
          type:
          - string
          - 'null'
          description: 'When the change order was completed (UTC). Stamped server-side when status is Completed and

            none is supplied'
          format: date-time
        status:
          $ref: '#/components/schemas/ChangeOrderStatusEnum'
        detail:
          maxLength: 2000
          minLength: 0
          type:
          - string
          - 'null'
          description: What the change is
        disposition:
          $ref: '#/components/schemas/CommonReferenceDto'
        notificationsEnabled:
          type:
          - boolean
          - 'null'
          description: 'Whether completing a task on this change order tells the owners of the next step. Null on a

            create takes the company default; null on an update keeps what the change order carries'
      additionalProperties: false
      description: 'The writable state of a change order. Create and update both take the whole object: update is a

        full replacement, so an omitted field is cleared.'
    ChangeOrderStatusEnum:
      enum:
      - new
      - inProgress
      - completed
      type: string
      description: Where a change order stands.
    ChangeOrderImpactedRecordDto:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: The id of the impacted record
        documentType:
          $ref: '#/components/schemas/ChangeOrderEnumImpactedRecordDocumentTypeEnum'
        documentId:
          maxLength: 24
          minLength: 24
          type:
          - string
          - 'null'
          description: The id of the impacted sales order, job or quote
        originalRevDocumentLineId:
          maxLength: 24
          minLength: 24
          type:
          - string
          - 'null'
          description: 'For a sales order or quote, the impacted line item at the original revision. For a job, the

            sales order line item the job was created from'
        newRevDocumentLineId:
          maxLength: 24
          minLength: 24
          type:
          - string
          - 'null'
          description: 'For a sales order or quote, the replacement line created at the new revision when the change

            order is applied; null until then'
        disposition:
          type:
          - string
          - 'null'
          description: What happens to the original line when the change order is applied
        rolledRev:
          type: boolean
          description: Whether the document now sits at the change order's new revision item
      additionalProperties: false
      description: 'One document a change order impacts. Read-only: the change order write endpoints ignore the

        collection, which is maintained in the app.'
    ChangeOrderDto:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: The id of the change order
        number:
          type: integer
          description: The change order's sequential number, unique within the tenant and assigned server-side
          format: int32
        customer:
          $ref: '#/components/schemas/CommonReferenceDto'
        originalRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        newRevisionItem:
          $ref: '#/components/schemas/ChangeOrderItemReferenceDto'
        requestedUtc:
          type:
          - string
          - 'null'
          description: When the change was requested (UTC). Defaults to the moment of creation when not supplied
          format: date-time
        dueDateUtc:
          type:
          - string
          - 'null'
          description: When the change order is due (UTC), or null when it carries no date
          format: date-time
        approvedUtc:
          type:
          - string
          - 'null'
          description: When the change order was approved (UTC), or null when it has not been
          format: date-time
        completedUtc:
          type:
          - string
          - 'null'
          description: 'When the change order was completed (UTC). Stamped server-side when status moves to Completed

            without one supplied'
          format: date-time
        status:
          $ref: '#/components/schemas/ChangeOrderStatusEnum'
        detail:
          type:
          - string
          - 'null'
          description: What the change is
        disposition:
          $ref: '#/components/schemas/CommonReferenceDto'
        notificationsEnabled:
          type:
          - boolean
          - 'null'
          description: Whether completing a task on this change order tells the owners of the next step
        createdBy:
          $ref: '#/components/schemas/CommonReferenceDto'
        createdUtc:
          type:
          - string
          - 'null'
          description: When the change order was created (UTC). Read-only
          format: date-time
        modifiedBy:
          $ref: '#/components/schemas/CommonReferenceDto'
        modifiedUtc:
          type:
          - string
          - 'null'
          description: When the change order was last modified (UTC); supports incremental sync. Read-only
          format: date-time
        impactedRecords:
          type: array
          items:
            $ref: '#/components/schemas/ChangeOrderImpactedRecordDto'
          description: 'The sales orders, jobs and quotes the change order impacts; empty when it impacts none.

            Read-only — create and update never write it, so a change made to it elsewhere while an update

            is in flight stands'
      additionalProperties: false
      description: 'A change order: an item revision being replaced, and the sales orders, jobs and quotes it

        touches. Its tasks are a separate resource.'
  securitySchemes:
    bearer:
      type: http
      description: Your API bearer token generated in System Data > Advanced > Public API Setup
      scheme: bearer
      bearerFormat: JWT
x-tagGroups:
- name: Accounting Code
  tags:
  - Accounting Code
- name: Alert
  tags:
  - Alert
- name: Attachment
  tags:
  - Attachment
  - Attachment Certification
- name: Auth
  tags:
  - Auth
- name: CAPAs
  tags:
  - CAPAs
- name: Change Order
  tags:
  - Change Order
- name: Chart Of Accounts
  tags:
  - Chart Of Accounts
- name: Company Info
  tags:
  - Company Info
- name: Custom Field
  tags:
  - Custom Field
- name: Customer
  tags:
  - Customer
  - Customer Address
  - Customer Contact
- name: Customer Tier
  tags:
  - Customer Tier
- name: Department
  tags:
  - Department
- name: Department Shift
  tags:
  - Department Shift
- name: Equipment
  tags:
  - Equipment
- name: Equipment Downtime
  tags:
  - Equipment Downtime
- name: Gauge Code
  tags:
  - Gauge Code
- name: Grade Code
  tags:
  - Grade Code
- name: InProcessTrackingFieldType
  tags:
  - InProcessTrackingFieldType
- name: Inventory
  tags:
  - Inventory
- name: Inventory Event
  tags:
  - Inventory Event
  - Inventory Event Details
- name: Inventory Lot
  tags:
  - Inventory Lot
- name: Inventory Transactions
  tags:
  - Inventory Transactions
- name: Invoice
  tags:
  - Invoice
  - Invoice Deposit Adjustment Line Item
  - Invoice Deposit Line Item
  - Invoice Discount Line Item
  - Invoice Fee Line Item
  - Invoice Line Item
  - Invoice Note
  - Invoice Part Line Item
  - Invoice Refund Line Item
  - Invoice Shipping Charge Line Item
  - Invoice Tax Line Item
- name: Item
  tags:
  - Item
  - Item Custom Fields
  - Item Customer
  - Item Material Vendor
  - Item PriceBreaks
  - Item Routing
  - Item Vendor
- name: Item Category
  tags:
  - Item Category
- name: Item Class
  tags:
  - Item Class
- name: Item Tag
  tags:
  - Item Tag
- name: Job
  tags:
  - Job
  - Job Custom Fields
  - Job Full Routing
  - Job Part Line Item Full Routing
  - Job Item To Make
  - Job Item To Make Operation
  - Job Message
  - Job Operation
- name: Job Tracking Timers
  tags:
  - Job Tracking Timers
- name: Location
  tags:
  - Location
- name: Material
  tags:
  - Material
  - Material Vendor
- name: Material Code
  tags:
  - Material Code
- name: NCRs
  tags:
  - NCRs
- name: Nesting
  tags:
  - Nesting
- name: Note
  tags:
  - Note
- name: Operation
  tags:
  - Operation
- name: Payment Term
  tags:
  - Payment Term
- name: Purchase Order
  tags:
  - Purchase Order
  - Purchase Order Custom Fields
  - Purchase Order Discount Line Item
  - Purchase Order Fee Line Item
  - Purchase Order Line Item
  - Purchase Order Outside Processing Line Item
  - Purchase Order Part Line Item
  - Purchase Order Tax Line Item
  - Purchase Order Vendor Credit Line Item
- name: Quote
  tags:
  - Quote
  - Quote Custom Fields
  - Quote Discount Line Item
  - Quote Fee Line Item
  - Quote Part Line Item
  - Quote Part Line Item Custom Fields
  - Quote Part Line Item Full Routing
  - Quote Tax Line Item
- name: Receiving
  tags:
  - Receiving Receipt
  - Receiving Receipt Line Item
- name: Refund Reason Code
  tags:
  - Refund Reason Code
- name: Reporting
  tags:
  - Reporting
- name: Sales Order
  tags:
  - Sales Order
  - Sales Order Blanket Line Item
  - Sales Order Custom Fields
  - Sales Order Discount Line Item
  - Sales Order Fee Line Item
  - Sales Order Line Item
  - Sales Order Part Line Item
  - Sales Order Part Line Item Custom Fields
  - Sales Order Part Line Item Full Routing
  - Sales Order Refund Line Item
  - Sales Order Shipping Charge Line Item
  - Sales Order Tax Line Item
- name: ScrapReport
  tags:
  - ScrapReport
- name: Settings
  tags:
  - Settings
- name: Shape Code
  tags:
  - Shape Code
- name: Shipment Line Items (V3)
  tags:
  - Shipment Line Items (V3)
- name: Shipment
  tags:
  - Shipment Custom Fields
- name: Shipments
  tags:
  - Shipments
- name: Shipping Method
  tags:
  - Shipping Method
- name: Tag
  tags:
  - Tag
- name: Task
  tags:
  - Task
- name: Tax Rate
  tags:
  - Tax Rate
- name: Time Clock Timers
  tags:
  - Time Clock Timers
- name: Timer
  tags:
  - Timer
- name: Tool
  tags:
  - Tool
- name: Tool Calibration
  tags:
  - Tool Calibration
- name: User
  tags:
  - User
  - User Status
- name: Vendor
  tags:
  - Vendor
  - Vendor Address
  - Vendor Contact
- name: Work Order
  tags:
  - Work Order
- name: WorkCenter
  tags:
  - WorkCenter
x-provenance:
  method: harvested
  publisher: Fulcrumpro
  source: https://api.fulcrumpro.com/swagger/v1/swagger.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)