Skip to main content

Fulcrum PublicAPI (v1)

Download OpenAPI specification:Download

Accounting Code

Create an accounting code

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Descriptive name associated to the object

style
required
string (CommonEnumStyleEnum)
Enum: "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "connected"

Style enum (for tags).

description
string or null [ 1 .. 200 ] characters

Descriptive name associated to the object

Responses

Request samples

Content type
{
  • "name": "string",
  • "style": "primary",
  • "description": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Get an accounting code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find accounting codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Alert

Find the job-tracking alerts that are currently raised, on job operations and work-order operations, based on search parameters. An alert raised on a job operation that is grouped into a work order is stored against the work-order operation, so it is a `workOrder` alert: filter on `workOrderIds`, not `jobIds`, to find it. Cleared alerts are not returned. Alerts on a deleted job or work order are not returned. Sort by `raisedAtUtc` or `id`, ignoring case. Alerts that tie on `raisedAtUtc` are ordered by `id` ascending. Without a sort field, results are ordered by `raisedAtUtc`, oldest first, and the sort direction is honored.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
jobIds
Array of strings or null [ 1 .. 500 ] items

Filter alerts to those raised on an operation of one of these jobs.

workOrderIds
Array of strings or null [ 1 .. 500 ] items

Filter alerts to those raised on an operation of one of these work orders.

workCenterIds
Array of strings or null [ 1 .. 500 ] items

Filter alerts to those raised on an operation scheduled to one of these work centers.

equipmentIds
Array of strings or null [ 1 .. 500 ] items

Filter alerts to those raised on an operation scheduled to one of these pieces of equipment.

alertNames
Array of strings or null [ 1 .. 500 ] items

Filter alerts to those with one of these alert names.

raisedAfterUtc
string or null <date-time>

Filter alerts raised after (exclusive) this time in UTC. If no time component is passed, midnight UTC will be used.

raisedBeforeUtc
string or null <date-time>

Filter alerts raised before (exclusive) this time in UTC. If no time component is passed, midnight UTC will be used.

Responses

Request samples

Content type
{
  • "jobIds": [
    ],
  • "workOrderIds": [
    ],
  • "workCenterIds": [
    ],
  • "equipmentIds": [
    ],
  • "alertNames": [
    ],
  • "raisedAfterUtc": "2019-08-24T14:15:22Z",
  • "raisedBeforeUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Attachment

Create an attachment

Request Body schema: multipart/form-data
File
required
string <binary>

The file itself

Detail.Owner.Type
string (CommonEnumOwnerTypeCreateEnum)
Enum: "salesOrder" "salesOrderReceiving" "salesOrderPartLineItem" "quote" "quotePartLineItem" "purchaseOrder" "purchaseOrderReceiving" "purchaseOrderPartLineItem" "invoice" "workOrderOperation" "operation" "item" "job" "shipment"

Owner types

Detail.Owner.Id
string [ 24 .. 36 ] characters

The primary owner id of this attachment.

Detail.Description
string [ 1 .. 200 ] characters

File description

Detail.IsNoteAttachment
required
boolean

Indicates whether this attachment is bound to a note.

Detail.Parent.Type
string (CommonEnumOwnerTypeCreateEnum)
Enum: "salesOrder" "salesOrderReceiving" "salesOrderPartLineItem" "quote" "quotePartLineItem" "purchaseOrder" "purchaseOrderReceiving" "purchaseOrderPartLineItem" "invoice" "workOrderOperation" "operation" "item" "job" "shipment"

Owner types

Detail.Parent.Id
string [ 24 .. 36 ] characters

The primary owner id of this attachment.

object

Metadata to associate to the attachment.

Responses

Response samples

Content type
{
  • "id": "string"
}

Create an attachment based on a remote data endpoint.

Request Body schema:
required
required
object (AttachmentOwnerCreateDto)

Attachment owner

object (AttachmentOwnerCreateDto)

Attachment owner

fileName
required
string [ 1 .. 200 ] characters

File name

accessUrl
required
string <uri> non-empty

File access url

token
string or null

Optional token that may be required for access the AccessUrl

Responses

Request samples

Content type
{
  • "owner": {
    },
  • "parent": {
    },
  • "fileName": "string",
  • "accessUrl": "http://example.com",
  • "token": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific attachment

path Parameters
attachmentId
required
string = 24 characters

Responses

Get a specific attachment

path Parameters
attachmentId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "owner": {
    },
  • "name": "string",
  • "description": "string",
  • "type": "standard",
  • "format": "undefined",
  • "size": 0,
  • "fileId": "string",
  • "createdUtc": "2019-08-24T14:15:22Z"
}

Download a specific attachment

path Parameters
attachmentId
required
string = 24 characters
query Parameters
fileName
string

Responses

Download attachment(s) for a given filter in ZIP format

query Parameters
fileName
string
Request Body schema:
required
object (AttachmentOwnerDto)

Attachment owner

Array of objects or null (AttachmentOwnerDto) [ 1 .. 500 ] items

The primary owners of the attachment.

attachmentIds
Array of strings or null [ 1 .. 500 ] items

Filter to attachments whose ids are in the list.

formats
Array of strings or null (CommonEnumAttachmentMediaFormatEnum) [ 1 .. 500 ] items
Enum: "undefined" "cad" "document" "image" "video"

Allows for filtering based on specific attachment format types.

Responses

Request samples

Content type
{
  • "owner": {
    },
  • "owners": [
    ],
  • "attachmentIds": [
    ],
  • "formats": [
    ]
}

Find attachments based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
required
object (AttachmentOwnerDto)

Attachment owner

Array of objects or null (AttachmentOwnerDto) [ 1 .. 500 ] items

The primary owners of the attachment.

attachmentIds
Array of strings or null [ 1 .. 500 ] items

Filter to attachments whose ids are in the list.

formats
Array of strings or null (CommonEnumAttachmentMediaFormatEnum) [ 1 .. 500 ] items
Enum: "undefined" "cad" "document" "image" "video"

Allows for filtering based on specific attachment format types.

Responses

Request samples

Content type
{
  • "owner": {
    },
  • "owners": [
    ],
  • "attachmentIds": [
    ],
  • "formats": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Attachment Certification

Create a certification attachment

Request Body schema: multipart/form-data
File
required
string <binary>

The file itself

Detail.Owner.Type
string (CommonEnumOwnerTypeCertificationEnum)
Enum: "item" "purchaseOrderReceivingLineItem" "salesOrderReceivingLineItem"

Owner types that can be used for certification attachments

Detail.Owner.Id
string [ 24 .. 36 ] characters

The primary owner id of this attachment.

Detail.Description
string [ 1 .. 200 ] characters

File description

object

Metadata to associate to the attachment.

Detail.LotId
string = 24 characters

Lot id.

Responses

Response samples

Content type
{
  • "id": "string"
}

Auth

Get details about a token used to authenticate the request

Responses

Response samples

Content type
{
  • "revocationId": "stringstringstringstring",
  • "name": "string",
  • "domain": "string",
  • "expirationUtc": "2019-08-24T14:15:22Z"
}

CAPAs

Create a new CAPA in the New status.

Request Body schema:
required
capaType
required
string (CAPACapaTypeDto)
Enum: "correctiveAction" "preventiveAction" "supplierIssue" "safetyIssue"

The kind of corrective and preventive action a CAPA tracks.

problemStatement
required
string [ 1 .. 2000 ] characters

What went wrong, or what could go wrong.

rootCauseAnalysis
string or null [ 1 .. 2000 ] characters

Root cause analysis text, when it is already known.

dueDate
string or null <date-time>

When the CAPA is due. Defaults to one month after creation.

Responses

Request samples

Content type
{
  • "capaType": "correctiveAction",
  • "problemStatement": "string",
  • "rootCauseAnalysis": "string",
  • "dueDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "string"
}

Get a specific CAPA by id.

path Parameters
capaId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "capaType": "string",
  • "problemStatement": "string",
  • "status": "string",
  • "rootCauseAnalysis": "string",
  • "correctiveAction": "string",
  • "ncrId": "string",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "closedUtc": "2019-08-24T14:15:22Z"
}

Finds CAPAs based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
status
string or null

Filter CAPAs by a specific status Accepted Values: Closed, Hold, New, Quality Review, Engineering Review

type
string or null

Filter CAPAs by a specific type. Available values are configured per tenant in Quality settings (NCR dropdowns).

ncrId
string or null

Filter CAPAs by a NCR Id

createdUtc
string or null <date-time>

Filter CAPAs created on or after this instant, time of day included. Combines with FulcrumProduct.PublicApi.Controllers.CAPAs.Request.CapaListParameters.CreatedFrom when both are sent.

createdFrom
string or null <date-time>

Filter to CAPAs created on or after this date, as a whole day in the shop's timezone. Any time component is ignored.

createdTo
string or null <date-time>

Filter to CAPAs created on or before this date, as a whole day in the shop's timezone, so a CAPA created later that same shop day still matches.

Responses

Request samples

Content type
{
  • "status": "string",
  • "type": "string",
  • "ncrId": "string",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "createdFrom": "2019-08-24T14:15:22Z",
  • "createdTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Change Order

Create a change order. `originalRevisionItem.id` is required and `disposition.id`, when sent, must resolve to a change order disposition. The change order's sequential number is assigned server-side, `requestedUtc` defaults to the account's current local day at UTC midnight, and a change order created Completed is stamped with `completedUtc`. Where change order updates are enabled, the server seeds `impactedRecords` from every open document still carrying the original revision — a sales order or quote line with no `disposition` yet, a complete job as `Finish As Is`, any other job as `Revision` — and applies the account's default change order task template, counting due dates from the UTC day of `requestedUtc`, sent or defaulted. The response carries the seeded `impactedRecords` but not the tasks, which the task endpoints list under the change order's id. Creates are not idempotent: a retried request creates a second change order.

Request Body schema:
required
object (CommonReferenceDto)

Represents a reference to a document in a DB collection

required
object (ChangeOrderItemReferenceDto)

A reference to an item revision on a change order.

object (ChangeOrderItemReferenceDto)

A reference to an item revision on a change order.

requestedUtc
string or null <date-time>

When the change was requested (UTC). Defaults to the moment of creation when not supplied

dueDateUtc
string or null <date-time>

When the change order is due (UTC)

approvedUtc
string or null <date-time>

When the change order was approved (UTC)

completedUtc
string or null <date-time>

When the change order was completed (UTC). Stamped server-side when status is Completed and none is supplied

status
string (ChangeOrderStatusEnum)
Enum: "new" "inProgress" "completed"

Where a change order stands.

detail
string or null [ 0 .. 2000 ] characters

What the change is

object (CommonReferenceDto)

Represents a reference to a document in a DB collection

notificationsEnabled
boolean or null

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

Responses

Request samples

Content type
{
  • "customer": {
    },
  • "originalRevisionItem": {
    },
  • "newRevisionItem": {
    },
  • "requestedUtc": "2019-08-24T14:15:22Z",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "approvedUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "status": "new",
  • "detail": "string",
  • "disposition": {
    },
  • "notificationsEnabled": true
}

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "customer": {
    },
  • "originalRevisionItem": {
    },
  • "newRevisionItem": {
    },
  • "requestedUtc": "2019-08-24T14:15:22Z",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "approvedUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "status": "new",
  • "detail": "string",
  • "disposition": {
    },
  • "notificationsEnabled": true,
  • "createdBy": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedBy": {
    },
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "impactedRecords": [
    ]
}

Delete a change order and the tasks filed under it, with their attachments. A change order that has been applied — one carrying a record already rolled to the new revision — cannot be deleted.

path Parameters
id
required
string

Responses

Get a change order by id, including the sales orders, jobs and quotes it impacts. Its tasks are not embedded — read them from the change order task list.

path Parameters
id
required
string

Responses

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "customer": {
    },
  • "originalRevisionItem": {
    },
  • "newRevisionItem": {
    },
  • "requestedUtc": "2019-08-24T14:15:22Z",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "approvedUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "status": "new",
  • "detail": "string",
  • "disposition": {
    },
  • "notificationsEnabled": true,
  • "createdBy": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedBy": {
    },
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "impactedRecords": [
    ]
}

Update a change order. A full replacement of the header: omitted fields are cleared, except `notificationsEnabled`, where null keeps the stored value. The change order's impacted records and tasks are never written here — both are maintained elsewhere, and a concurrent change to either stands.

path Parameters
id
required
string
Request Body schema:
required
object (CommonReferenceDto)

Represents a reference to a document in a DB collection

required
object (ChangeOrderItemReferenceDto)

A reference to an item revision on a change order.

object (ChangeOrderItemReferenceDto)

A reference to an item revision on a change order.

requestedUtc
string or null <date-time>

When the change was requested (UTC). Defaults to the moment of creation when not supplied

dueDateUtc
string or null <date-time>

When the change order is due (UTC)

approvedUtc
string or null <date-time>

When the change order was approved (UTC)

completedUtc
string or null <date-time>

When the change order was completed (UTC). Stamped server-side when status is Completed and none is supplied

status
string (ChangeOrderStatusEnum)
Enum: "new" "inProgress" "completed"

Where a change order stands.

detail
string or null [ 0 .. 2000 ] characters

What the change is

object (CommonReferenceDto)

Represents a reference to a document in a DB collection

notificationsEnabled
boolean or null

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

Responses

Request samples

Content type
{
  • "customer": {
    },
  • "originalRevisionItem": {
    },
  • "newRevisionItem": {
    },
  • "requestedUtc": "2019-08-24T14:15:22Z",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "approvedUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "status": "new",
  • "detail": "string",
  • "disposition": {
    },
  • "notificationsEnabled": true
}

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "customer": {
    },
  • "originalRevisionItem": {
    },
  • "newRevisionItem": {
    },
  • "requestedUtc": "2019-08-24T14:15:22Z",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "approvedUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "status": "new",
  • "detail": "string",
  • "disposition": {
    },
  • "notificationsEnabled": true,
  • "createdBy": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedBy": {
    },
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "impactedRecords": [
    ]
}

Finds change orders based on search parameters. Rows carry the change order header without its impacted records; read one change order to get those. Sorts on `number`, `status`, `requestedUtc`, `approvedUtc`, `completedUtc`, `dueDateUtc`, `createdUtc`, `modifiedUtc`, `customer`, `disposition` or `detail`; an unrecognised sort field falls back to `requestedUtc` ascending.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
search
string or null

Case-insensitive search over the customer name, the original and new revision items, and the detail

statuses
Array of strings or null (ChangeOrderStatusEnum)
Enum: "new" "inProgress" "completed"

Only change orders in these statuses

customerIds
Array of strings or null

Only change orders raised for these customers

dispositionIds
Array of strings or null

Only change orders carrying these dispositions

requestedFromUtc
string or null <date-time>

Inclusive lower bound on requestedUtc

requestedToUtc
string or null <date-time>

Inclusive upper bound on requestedUtc

dueFromUtc
string or null <date-time>

Inclusive lower bound on dueDateUtc

dueToUtc
string or null <date-time>

Inclusive upper bound on dueDateUtc

createdFromUtc
string or null <date-time>

Inclusive lower bound on createdUtc

createdToUtc
string or null <date-time>

Inclusive upper bound on createdUtc

completedFromUtc
string or null <date-time>

Inclusive lower bound on completedUtc

completedToUtc
string or null <date-time>

Inclusive upper bound on completedUtc

overdue
boolean or null

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
string or null

Only change orders impacting this sales order, job or quote

revisionItemId
string or null

Only change orders whose original or new revision item is this item

modifiedAfterUtc
string or null <date-time>

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

modifiedBeforeUtc
string or null <date-time>

Only change orders written at or before this UTC instant

Responses

Request samples

Content type
{
  • "search": "string",
  • "statuses": [
    ],
  • "customerIds": [
    ],
  • "dispositionIds": [
    ],
  • "requestedFromUtc": "2019-08-24T14:15:22Z",
  • "requestedToUtc": "2019-08-24T14:15:22Z",
  • "dueFromUtc": "2019-08-24T14:15:22Z",
  • "dueToUtc": "2019-08-24T14:15:22Z",
  • "createdFromUtc": "2019-08-24T14:15:22Z",
  • "createdToUtc": "2019-08-24T14:15:22Z",
  • "completedFromUtc": "2019-08-24T14:15:22Z",
  • "completedToUtc": "2019-08-24T14:15:22Z",
  • "overdue": true,
  • "impactedDocumentId": "string",
  • "revisionItemId": "string",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Chart Of Accounts

Get an account class.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find accounts based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Company Info

Get info for a specific company.

path Parameters
companyId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "isPrimary": true,
  • "name": "string",
  • "shipToAddress": {
    },
  • "remitToAddress": {
    },
  • "websiteUrl": "http://example.com",
  • "phoneNumber": "string",
  • "faxNumber": "string",
}

Find company information based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
isPrimary
boolean or null

Filter on primary company info

Responses

Request samples

Content type
{
  • "isPrimary": true
}

Response samples

Content type
[
  • {
    }
]

Custom Field

Get a custom field.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "label": "string",
  • "type": "text",
  • "module": "item",
  • "required": true,
  • "options": [
    ],
  • "prepend": "string",
  • "append": "string",
  • "helpText": "string"
}

Find custom fields based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter custom fields based on their name.

ids
Array of strings or null non-empty

Filter custom fields based on matching ids.

module
string (DomainSystemDataCustomFieldDefinitionModule)
Enum: "item" "item_Make" "item_Buy" "customer" "vendor" "quote" "sales_Order" "job" "invoice" "purchase_Order" "receive_Order" "ship_Order" "quote_Part_LineItem" "sales_Order_Part_LineItem" "purchase_Order_Part_LineItem" "outsideProcessing_LineItem" "shipping_Part_LineItem" "invoice_Part_LineItem" "job_Operation" "ncr" "capa"
type
string (DomainSystemDataCustomFieldDefinitionType)
Enum: "text" "multilineText" "dropdown" "multipleChoiceDropdown" "integerNumber" "decimalNumber" "floatingPointNumber" "boolean" "list" "date" "multipleChoiceUser"

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ],
  • "module": "item",
  • "type": "text"
}

Response samples

Content type
[
  • {
    }
]

Customer

Create a new customer

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name to give the customer. Must be unique to all active customers.

customerCode
string or null non-empty

Unique identifier for this customer

currencyCode
string or null non-empty

Currency code/denomination associated to this customer. If not provided, default to the primary currency code for the organization.

creditLimit
number or null <double> >= 0

Credit limit

paymentTermsId
string or null = 24 characters

Payment terms.

salesPersonId
string or null = 24 characters

Payment terms.

url
string or null <uri>

The Customer's website

isTaxable
boolean or null

Whether or not this customer is taxable on Sales Orders and Quotes

taxRateIds
Array of strings or null

A list of tax codes to be automatically added to new SalesOrders for the customer when AutoAddTaxLineItems process setting is enabled.

object or null

Arbitrary key-value-pair like data that can be used to later on search for the customer

object or null

Custom fields that have been defined on this entity.

notes
string or null

Notes associated to the customer.

hasCustomerPortal
boolean or null

Indicates if this customer is set up to use the customer portal.

Responses

Request samples

Content type
{
  • "name": "string",
  • "customerCode": "string",
  • "currencyCode": "string",
  • "creditLimit": 0.1,
  • "paymentTermsId": "stringstringstringstring",
  • "salesPersonId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxRateIds": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "notes": "string",
  • "hasCustomerPortal": true
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific customer

path Parameters
customerId
required
string = 24 characters

Responses

Get a specific customer

path Parameters
customerId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "customerCode": "string",
  • "currencyCode": "string",
  • "creditLimit": 0.1,
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "salesPersonId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxRateIds": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "notes": "string",
  • "hasCustomerPortal": true,
  • "customerTierId": "stringstringstringstring",
  • "customerTierName": "string",
  • "customerTypeId": "stringstringstringstring",
  • "customerTypeName": "string"
}

Partially update a customer

path Parameters
customerId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "customerCode": "string",
  • "currencyCode": "string",
  • "creditLimit": 0.1,
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "salesPersonId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxRateIds": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "notes": "string",
  • "hasCustomerPortal": true,
  • "customerTierId": "stringstringstringstring",
  • "customerTierName": "string",
  • "customerTypeId": "stringstringstringstring",
  • "customerTypeName": "string"
}

Update a specific customer

path Parameters
customerId
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name to give the customer. Must be unique to all active customers.

customerCode
string or null non-empty

Unique identifier for this customer

currencyCode
string or null non-empty

Currency code/denomination associated to this customer. If not provided, default to the primary currency code for the organization.

url
string or null <uri>

The Customer's website

creditLimit
number or null <double> >= 0

Credit limit

paymentTermsId
string or null = 24 characters

Payment terms identifier. Please reference /api/payment-terms endpoint.

salesPersonId
string or null = 24 characters

Sales person identifier. Please reference /api/users endpoint.

isTaxable
boolean or null

Whether or not this customer is taxable on Sales Orders and Quotes

taxRateIds
Array of strings or null

A list of tax codes to be automatically added to new SalesOrders for the customer when AutoAddTaxLineItems process setting is enabled.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

object or null

Custom fields that have been defined on this entity.

notes
string or null

Notes associated to the customer.

hasCustomerPortal
boolean or null

Indicates if this customer is set up to use the customer portal.

Responses

Request samples

Content type
{
  • "name": "string",
  • "customerCode": "string",
  • "currencyCode": "string",
  • "creditLimit": 0.1,
  • "paymentTermsId": "stringstringstringstring",
  • "salesPersonId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxRateIds": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "notes": "string",
  • "hasCustomerPortal": true
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "customerCode": "string",
  • "currencyCode": "string",
  • "creditLimit": 0.1,
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "salesPersonId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxRateIds": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "notes": "string",
  • "hasCustomerPortal": true,
  • "customerTierId": "stringstringstringstring",
  • "customerTierName": "string",
  • "customerTypeId": "stringstringstringstring",
  • "customerTypeName": "string"
}

Find customers based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to customers who's name contains the given string

customerCode
string or null non-empty

Unique identifier for this customer.

email
string or null non-empty

The email of the customer

modifiedAfterUtc
string or null <date-time>

Filter to customer records modified after the given datetime (in UTC)

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

Responses

Request samples

Content type
{
  • "name": "string",
  • "customerCode": "string",
  • "email": "string",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "externalReference": {
    }
}

Response samples

Content type
[
  • {
    }
]

Customer Address

Create a new customer address

path Parameters
customerId
required
string = 24 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).

address1
required
string [ 1 .. 200 ] characters

Primary address line.

address2
string or null [ 1 .. 200 ] characters

Second address line.

address3
string or null [ 1 .. 200 ] characters

Third address line.

city
required
string [ 1 .. 200 ] characters

Address city

stateProvince
string or null [ 1 .. 200 ] characters

Address state/province.

postalCode
required
string [ 1 .. 200 ] characters

Postal/zip code.

country
string or null [ 1 .. 200 ] characters

Country identifier.

shippingLeadTime
integer or null <int32> >= 0

Lead time for shipping contents.

primaryBilling
boolean

Signifies if this is a primary billing address.

primaryShipping
boolean

Signifies if this is a primary billing address.

email
string or null <email>

Email address

phone
string or null

Associated phone number

fax
string or null

Associated fax number

notes
string or null

General notes associated to this customer address

Responses

Request samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific customer address

path Parameters
customerId
required
string = 24 characters
customerAddressId
required
string = 36 characters

Responses

Get a specific customer address

path Parameters
customerId
required
string = 24 characters
customerAddressId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "id": "stringstringstringstringstringstring",
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Update a specific customer address

path Parameters
customerId
required
string = 24 characters
customerAddressId
required
string = 36 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).

address1
required
string [ 1 .. 200 ] characters

Primary address line.

address2
string or null [ 1 .. 200 ] characters

Second address line.

address3
string or null [ 1 .. 200 ] characters

Third address line.

city
required
string [ 1 .. 200 ] characters

Address city

stateProvince
string or null [ 1 .. 200 ] characters

Address state/province.

postalCode
required
string [ 1 .. 200 ] characters

Postal/zip code.

country
string or null [ 1 .. 200 ] characters

Country identifier.

shippingLeadTime
integer or null <int32> >= 0

Lead time for shipping contents.

primaryBilling
boolean

Signifies if this is a primary billing address.

primaryShipping
boolean

Signifies if this is a primary billing address.

email
string or null <email>

Email address

phone
string or null

Associated phone number

fax
string or null

Associated fax number

notes
string or null

General notes associated to this customer address

Responses

Request samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Get a list of addresses for a customer

path Parameters
customerId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Customer Contact

Create a new customer contact

path Parameters
customerId
required
string = 24 characters
Request Body schema:
required
firstName
required
string [ 1 .. 200 ] characters

First name

lastName
string or null [ 1 .. 200 ] characters

Last name

position
string or null [ 1 .. 200 ] characters

Position / Job Title

phone
string or null

Phone number

cellPhone
string or null

Cellphone number

email
string or null <email>

Email address

Responses

Request samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "phone": "string",
  • "cellPhone": "string",
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific customer contact

path Parameters
customerId
required
string = 24 characters

The id of the customer to modify contacts for

contactId
required
string = 36 characters

The id of the customer contact.

Responses

Get a specific customer contact

path Parameters
customerId
required
string = 24 characters

The id of the customer to modify contacts for

contactId
required
string = 36 characters

The id of the customer contact.

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "cellPhone": "string",
  • "phone": "string",
}

Update a specific customer contact

path Parameters
customerId
required
string = 24 characters

The id of the customer to modify contacts for

contactId
required
string = 36 characters

The id of the customer contact.

Request Body schema:
required

The new data to apply to the given index

firstName
required
string [ 1 .. 200 ] characters

First name

lastName
string or null [ 1 .. 200 ] characters

Last name

position
string or null [ 1 .. 200 ] characters

Position / Job Title

phone
string or null

Phone number

cellPhone
string or null

Cellphone number

email
string or null <email>

Email address

Responses

Request samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "phone": "string",
  • "cellPhone": "string",
}

Get a list of contacts for a customer

path Parameters
customerId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Customer Tier

Get a customer tier.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string"
}

Find customer tiers based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter customer tierds based on their name.

ids
Array of strings or null non-empty

Filter customer tiers based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Department

Create a department.

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

description
string or null [ 1 .. 200 ] characters

Description of the department.

workCenterIds
Array of strings or null

Identifiers of the work centers associated with this department. Please reference /api/work-centers endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "workCenterIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Get a department.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "deleted": true,
  • "workCenters": [
    ]
}

Update a department.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

description
string or null [ 1 .. 200 ] characters

Description of the department. Replaces the existing value.

workCenterIds
Array of strings or null

Identifiers of the work centers associated with this department. Replaces the existing set. Please reference /api/work-centers endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "workCenterIds": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "deleted": true,
  • "workCenters": [
    ]
}

Find departments based on search parameters. Only the departments the caller may see are returned.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null non-empty

Filter departments based on matching ids.

name
string or null [ 1 .. 200 ] characters

Filter departments based on their name.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Department Shift

Create a shift for a department. `startTime` and `endTime` are 24-hour HHmm times; an end time earlier than the start time is an overnight shift. Each `availableEquipment` entry must be equipment in the department and can be listed only once. The server fills `equipmentName` from the equipment, so a client value is ignored. Omitted optional fields take their defaults: no days, 0 simultaneous equipment, no maximum daily new jobs and no equipment.

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Name of the shift.

startTime
required
string non-empty

Time the shift starts, as a four-digit 24-hour clock value in HHmm format, "0000" to "2359": "0000" is midnight, "0800" is 8:00 AM and "1730" is 5:30 PM.

endTime
required
string non-empty

Time the shift ends, in the same HHmm format as startTime. An end time earlier than the start time means the shift runs overnight and ends on the next day. An end time equal to the start time is allowed.

object (DepartmentShiftDaysSaveDto)

The days of the week a shift is worked. An omitted or null day is saved as false.

object (DepartmentShiftDailyCountsSaveDto)

A whole-number count of 0 or more for each day of the week. An omitted or null day is saved as 0.

unlimitedCapacity
boolean or null

When true, the shift has no limit on how many pieces of equipment can run at the same time, and simultaneousEquipment is not applied on any day. Omitted or null is saved as false.

maxDailyNewJobs
integer or null <int32> >= 0

Maximum number of new jobs to schedule per shift, 0 or more. Omitted or null means no maximum.

Array of objects or null (DepartmentShiftEquipmentSaveDto)

The equipment available during the shift. Each equipmentId must be equipment in the shift's department and can be listed only once. The server fills each equipmentName from the equipment. Omitted or null means no equipment, so an update clears the list.

departmentId
required
string = 24 characters

Id of the department that works this shift. The department must exist and not be deleted. It cannot be changed after the shift is created. Please reference the /api/departments endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "startTime": "string",
  • "endTime": "string",
  • "days": {
    },
  • "simultaneousEquipment": {
    },
  • "unlimitedCapacity": true,
  • "maxDailyNewJobs": 0,
  • "availableEquipment": [
    ],
  • "departmentId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a department shift by id. The shift is soft-deleted: `GET /department-shifts/{id}` still returns it with `deleted` set to true, and lists no longer include it. The latest schedule is marked out of date. Deleting a shift that does not exist, is already deleted or belongs to a department at a site the caller does not reach answers 204 and changes nothing.

path Parameters
id
required
string = 24 characters

Responses

Get a department shift by id. A deleted shift is still returned, with `deleted` set to true.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "string",
  • "departmentId": "string",
  • "name": "string",
  • "startTime": "string",
  • "endTime": "string",
  • "lengthOfShiftInMinutes": 0,
  • "days": {
    },
  • "simultaneousEquipment": {
    },
  • "unlimitedCapacity": true,
  • "maxDailyNewJobs": 0,
  • "availableEquipment": [
    ],
  • "deleted": true
}

Update a department shift by id. This is a full replacement: every field is saved from the request, and an omitted field is cleared to its default, so omitting `days`, `simultaneousEquipment` or `availableEquipment` clears them. The shift's department cannot change; a `departmentId` in the body is ignored. Each `availableEquipment` entry must be equipment in the shift's department and can be listed only once, and the server fills `equipmentName` from the equipment. The latest schedule is marked out of date.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Name of the shift.

startTime
required
string non-empty

Time the shift starts, as a four-digit 24-hour clock value in HHmm format, "0000" to "2359": "0000" is midnight, "0800" is 8:00 AM and "1730" is 5:30 PM.

endTime
required
string non-empty

Time the shift ends, in the same HHmm format as startTime. An end time earlier than the start time means the shift runs overnight and ends on the next day. An end time equal to the start time is allowed.

object (DepartmentShiftDaysSaveDto)

The days of the week a shift is worked. An omitted or null day is saved as false.

object (DepartmentShiftDailyCountsSaveDto)

A whole-number count of 0 or more for each day of the week. An omitted or null day is saved as 0.

unlimitedCapacity
boolean or null

When true, the shift has no limit on how many pieces of equipment can run at the same time, and simultaneousEquipment is not applied on any day. Omitted or null is saved as false.

maxDailyNewJobs
integer or null <int32> >= 0

Maximum number of new jobs to schedule per shift, 0 or more. Omitted or null means no maximum.

Array of objects or null (DepartmentShiftEquipmentSaveDto)

The equipment available during the shift. Each equipmentId must be equipment in the shift's department and can be listed only once. The server fills each equipmentName from the equipment. Omitted or null means no equipment, so an update clears the list.

Responses

Request samples

Content type
{
  • "name": "string",
  • "startTime": "string",
  • "endTime": "string",
  • "days": {
    },
  • "simultaneousEquipment": {
    },
  • "unlimitedCapacity": true,
  • "maxDailyNewJobs": 0,
  • "availableEquipment": [
    ]
}

Response samples

Content type
{
  • "id": "string",
  • "departmentId": "string",
  • "name": "string",
  • "startTime": "string",
  • "endTime": "string",
  • "lengthOfShiftInMinutes": 0,
  • "days": {
    },
  • "simultaneousEquipment": {
    },
  • "unlimitedCapacity": true,
  • "maxDailyNewJobs": 0,
  • "availableEquipment": [
    ],
  • "deleted": true
}

Find department shifts based on search parameters. Deleted shifts are not returned. Sort by `id`, `departmentId`, `name`, `startTime`, `endTime`, `unlimitedCapacity`, `maxDailyNewJobs` or `createdUtc`, ignoring case. Shifts that tie on the sort field are ordered by `id` ascending. Without a sort field, results are ordered by creation date, newest first, whatever the sort direction. A shift whose department sits at a site the caller does not reach is not returned.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null [ 1 .. 500 ] items

Filter shifts to those with one of these ids.

departmentIds
Array of strings or null [ 1 .. 500 ] items

Filter shifts to those belonging to one of these departments.

name
string or null [ 1 .. 200 ] characters

Filter shifts whose name contains this text, ignoring case.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "departmentIds": [
    ],
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Equipment

Create a piece of equipment.

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

description
required
string [ 1 .. 200 ] characters

Description. Required.

workCenterId
string or null = 24 characters

WorkCenter identifier. Please reference /api/work-centers endpoint.

manufacturer
string or null [ 1 .. 200 ] characters

Manufacturer.

modelNumber
string or null [ 1 .. 200 ] characters

Model number.

serialNumber
string or null [ 1 .. 200 ] characters

Serial number.

canRunUnattended
boolean

Indicates if this equipment can be run unattended. This allows the portion of an operation that utilizes this equipment to be scheduled outside of a shift.

unlimitedCapacity
boolean

Indicates if this equipment can support multiple operations simultaneously.

status
string (EquipmentStatus)
Enum: "good" "poor" "bad" "outOfService"

Equipment status

notes
string or null [ 1 .. 2000 ] characters

Notes associated to the equipment.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "workCenterId": "stringstringstringstring",
  • "manufacturer": "string",
  • "modelNumber": "string",
  • "serialNumber": "string",
  • "canRunUnattended": true,
  • "unlimitedCapacity": true,
  • "status": "good",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Get a piece of equipment.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "workCenterId": "stringstringstringstring",
  • "manufacturer": "string",
  • "modelNumber": "string",
  • "serialNumber": "string",
  • "canRunUnattended": true,
  • "unlimitedCapacity": true,
  • "status": "good",
  • "notes": "string",
  • "deleted": true
}

Update a piece of equipment.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

description
required
string [ 1 .. 200 ] characters

Description. Required.

workCenterId
string or null = 24 characters

WorkCenter identifier. Please reference /api/work-centers endpoint.

manufacturer
string or null [ 1 .. 200 ] characters

Manufacturer.

modelNumber
string or null [ 1 .. 200 ] characters

Model number.

serialNumber
string or null [ 1 .. 200 ] characters

Serial number.

canRunUnattended
boolean

Indicates if this equipment can be run unattended. This allows the portion of an operation that utilizes this equipment to be scheduled outside of a shift.

unlimitedCapacity
boolean

Indicates if this equipment can support multiple operations simultaneously.

status
string (EquipmentStatus)
Enum: "good" "poor" "bad" "outOfService"

Equipment status

notes
string or null [ 1 .. 2000 ] characters

Notes associated to the equipment.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "workCenterId": "stringstringstringstring",
  • "manufacturer": "string",
  • "modelNumber": "string",
  • "serialNumber": "string",
  • "canRunUnattended": true,
  • "unlimitedCapacity": true,
  • "status": "good",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "workCenterId": "stringstringstringstring",
  • "manufacturer": "string",
  • "modelNumber": "string",
  • "serialNumber": "string",
  • "canRunUnattended": true,
  • "unlimitedCapacity": true,
  • "status": "good",
  • "notes": "string",
  • "deleted": true
}

Find equipment based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null non-empty

Filter equipment based on matching ids.

name
string or null [ 1 .. 200 ] characters

Filter equipment based on their name.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Equipment Downtime

Create an equipment downtime. `startDateTime` and `endDateTime` are UTC; the end cannot be earlier than the start. Each `departments` entry must be a department that exists, listed once, and each of its `equipment` entries must be equipment in that department, listed once for it. An empty or omitted `equipment` list means the whole department is down. Departments and equipment are saved in request order, and the server fills `departmentName` and `equipmentName` from the records, so client values are ignored.

Request Body schema:
required
startDateTime
required
string <date-time>

When the downtime starts, in UTC. A value with an offset is converted to UTC; a value without an offset is read as UTC.

endDateTime
required
string <date-time>

When the downtime ends, in UTC, read the same way as startDateTime. It cannot be earlier than startDateTime; an end equal to the start is allowed.

Array of objects or null (EquipmentDowntimeDepartmentSaveDto) <= 500 items

The departments that are down, saved in request order, at most 500. Each departmentId must be a department that exists and is not deleted, and it can be listed only once. Omitted, null or empty means no departments, so an update clears them.

Responses

Request samples

Content type
{
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "endDateTime": "2019-08-24T14:15:22Z",
  • "departments": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Delete an equipment downtime by id. The downtime is soft-deleted: `GET /equipment-downtimes/{id}` still returns it with `deleted` set to true, and lists no longer include it. Deleting a downtime that does not exist or is already deleted answers 204 and changes nothing.

path Parameters
id
required
string = 24 characters

Responses

Get an equipment downtime by id. A deleted downtime is still returned, with `deleted` set to true.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "string",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "endDateTime": "2019-08-24T14:15:22Z",
  • "departments": [
    ],
  • "deleted": true
}

Update an equipment downtime by id. This is a full replacement: the window and the whole set of departments and equipment are saved from the request, in request order, so omitting `departments` clears them. The same rules as create apply: the end cannot be earlier than the start, each department must exist and be listed once, and each piece of equipment must be in its department and be listed once for it. The server fills `departmentName` and `equipmentName` from the records.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
startDateTime
required
string <date-time>

When the downtime starts, in UTC. A value with an offset is converted to UTC; a value without an offset is read as UTC.

endDateTime
required
string <date-time>

When the downtime ends, in UTC, read the same way as startDateTime. It cannot be earlier than startDateTime; an end equal to the start is allowed.

Array of objects or null (EquipmentDowntimeDepartmentSaveDto) <= 500 items

The departments that are down, saved in request order, at most 500. Each departmentId must be a department that exists and is not deleted, and it can be listed only once. Omitted, null or empty means no departments, so an update clears them.

Responses

Request samples

Content type
{
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "endDateTime": "2019-08-24T14:15:22Z",
  • "departments": [
    ]
}

Response samples

Content type
{
  • "id": "string",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "endDateTime": "2019-08-24T14:15:22Z",
  • "departments": [
    ],
  • "deleted": true
}

Find equipment downtimes based on search parameters. Deleted downtimes are not returned. Sort by `id`, `startDateTime`, `endDateTime` or `createdUtc`, ignoring case. Downtimes that tie on the sort field are ordered by `id` ascending. Without a sort field, results are ordered by creation date, newest first, whatever the sort direction.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null [ 1 .. 500 ] items

Filter downtimes to those with one of these ids.

departmentIds
Array of strings or null [ 1 .. 500 ] items

Filter downtimes to those covering at least one of these departments.

startsBeforeUtc
string or null <date-time>

Filter downtimes that start before (exclusive) this time in UTC. If no time component is passed, midnight UTC will be used.

endsAfterUtc
string or null <date-time>

Filter downtimes that end after (exclusive) this time in UTC. If no time component is passed, midnight UTC will be used. Combine with startsBeforeUtc to find downtimes overlapping a window.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "departmentIds": [
    ],
  • "startsBeforeUtc": "2019-08-24T14:15:22Z",
  • "endsAfterUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Gauge Code

Get a gauge code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find gauge codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Grade Code

Get a grade code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find grade codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

InProcessTrackingFieldType

Get an in process tracking field type

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "dataType": "boolean",
  • "description": "string",
  • "dropDownOptions": [
    ],
  • "unitTypeName": "string"
}

Lists in process tracking field types

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter in process tracking fields based on their name.

ids
Array of strings or null non-empty

Filter in process tracking fields based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Inventory

Find inventory based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
lotIds
Array of strings or null

Filter inventory based on lot ids.

itemIds
Array of strings or null

Filter inventory based on item ids.

locationIds
Array of strings or null

Filter inventory based on location ids.

Responses

Request samples

Content type
{
  • "lotIds": [
    ],
  • "itemIds": [
    ],
  • "locationIds": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Returns on hand counts by item. Excludes reserved inventory counts by default, but can be included by passing in the ```includeReserved``` query parameter. NOTE: If the response does not contain an item identifier, it means there is no quantity on hand.

query Parameters
includeReserved
boolean
Default: false

Whether to included reserved inventory into the counts

Responses

Response samples

Content type
{
  • "property1": 0.1,
  • "property2": 0.1
}

Override an inventory's quantity.

Request Body schema:
required

The parameters for the request

itemId
required
string = 24 characters

Item identifier.

quantity
required
number <double>

The quantity to set the item's inventory level to.

lotId
string or null

The lot identifier to apply this override to

locationId
string or null

The location identifier to apply this override to. null signifies no location.

note
string or null

The note to add to the override transaction.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "lotId": "string",
  • "locationId": "string",
  • "note": "string"
}

Pick inventory against a specific item.

Request Body schema:
required
itemId
required
string = 24 characters

Item identifier. Please reference /api/items endpoint.

secondaryType
required
string (InventoryPickEventSecondaryType)
Enum: "pick" "consume" "scrap" "stockAdjustmentDecrease" "otherDecrease"

Secondary event type specifically for picking.

quantity
required
number <double>

Quantity of the item to pick.

locationId
string or null = 24 characters

Location id that inventory is picked from. Please reference /api/locations endpoint

lotId
string or null = 24 characters

Lot identifier for this block of inventory. Please reference /api/inventory-lots endpoint

note
string or null [ 1 .. 2000 ] characters

Notes associated to this transaction.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "secondaryType": "pick",
  • "quantity": 0.1,
  • "locationId": "stringstringstringstring",
  • "lotId": "stringstringstringstring",
  • "note": "string"
}

Returns quantity available by item. This is the on hand + incoming supply - demand. NOTE: If the response does not contain an item identifier, it means there is no quantity on hand.

Responses

Response samples

Content type
{
  • "property1": 0.1,
  • "property2": 0.1
}

Receive inventory for a specific item.

Request Body schema:
required
itemId
required
string = 24 characters

Item identifier. Please reference /api/items endpoint.

secondaryType
required
string (InventoryReceiveEventSecondaryType)
Enum: "receive" "found" "stockAdjustmentIncrease" "otherIncrease"

Secondary event type specifically for receiving.

quantity
required
number <double>

Quantity of the item to receive.

locationId
string or null = 24 characters

Location id that inventory is received into. Please reference /api/locations endpoint

lotId
string or null = 24 characters

Lot identifier for this block of inventory. Please reference /api/inventory-lots endpoint

lotNumber
string or null [ 1 .. 200 ] characters

Lot name.

note
string or null [ 1 .. 2000 ] characters

Notes associated to this transaction.

laborValue
number or null <double> >= 0

Labor value associated (per unit).

machineValue
number or null <double> >= 0

Machine value associated (per unit).

outsideProcessingValue
number or null <double> >= 0

Outside processing value associated (per unit).

materialValue
number or null <double> >= 0

Material value associated (per unit).

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "secondaryType": "receive",
  • "quantity": 0.1,
  • "locationId": "stringstringstringstring",
  • "lotId": "stringstringstringstring",
  • "lotNumber": "string",
  • "note": "string",
  • "laborValue": 0.1,
  • "machineValue": 0.1,
  • "outsideProcessingValue": 0.1,
  • "materialValue": 0.1
}

Inventory Event

Get a specific inventory event

path Parameters
inventoryEventId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "actionDate": "2019-08-24T14:15:22Z",
  • "type": "pick",
  • "secondaryType": "pick",
  • "sourceType": "purchaseOrder",
  • "sourceName": "string",
  • "sourceEntityId": "string",
  • "sourceRelatedType": "purchaseOrder",
  • "sourceRelatedEntityId": "string",
  • "sourceItemToMakeId": "string",
  • "itemId": "stringstringstringstring",
  • "itemToMakeId": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "laborValue": {
    },
  • "machineValue": {
    },
  • "outsideProcessingValue": {
    },
  • "materialValue": {
    },
  • "totalValue": {
    },
  • "reservedForId": "stringstringstringstring",
  • "reservedForType": "job",
  • "lotId": "stringstringstringstring",
  • "locationId": "stringstringstringstring",
  • "revertInventoryEventId": "stringstringstringstring",
  • "note": "string",
  • "resultEffects": {
    },
  • "details": {
    }
}

Find inventory events based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
createdBeforeUtc
string or null <date-time>

Filters events created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters events created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

types
Array of strings or null (InventoryEventType) non-empty
Enum: "pick" "receive" "revert" "adjustment" "setItemValue" "eventOverride"

Inventory event type(s).

secondaryTypes
Array of strings or null (InventoryEventSecondaryType) non-empty
Enum: "pick" "receive" "override" "revert" "deposit" "create" "consume" "ship" "sold" "transferOut" "transferIn" "found" "expired" "damaged" "lost" "returnVendor" "returnStock" "receivedNoPo" "returnIncrease" "returnDecrease" "otherIncrease" "otherDecrease" "scrap" "waste" "transferredFromSalesOrder" "overrideItemValue" "transferFromLot" "transferToLot" "stockAdjustmentIncrease" "stockAdjustmentDecrease" "stockTake"

Inventory event secondary type(s).

sourceTypes
Array of strings or null (InventoryEnumEventSourceType) non-empty
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"

Inventory event source type(s).

itemIds
Array of strings or null non-empty

Item id. Please reference /api/items endpoint.

itemToMakeIds
Array of strings or null non-empty

Item id. Please reference /api/items endpoint.

reservedForTypes
Array of strings or null (DomainCommonEntityType) non-empty
Enum: "job" "salesOrder" "shipment" "shipmentLineItem" "invoice" "invoiceLineItem" "customer" "customerAddress" "item" "receivingInspection" "failedInspection"

Inventory reservation types.

reservedForIds
Array of strings or null non-empty

Inventory reservation ids.

inventoryEventIds
Array of strings or null non-empty

Inventory event ids.

actionDateFrom
string or null <date-time>

Filter to events whose action date falls on or after this date, as a whole day in the shop's timezone. Any time component is ignored.

actionDateTo
string or null <date-time>

Filter to events whose action date falls on or before this date, as a whole day in the shop's timezone, so an event actioned later that same shop day still matches.

Responses

Request samples

Content type
{
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "types": [
    ],
  • "secondaryTypes": [
    ],
  • "sourceTypes": [
    ],
  • "itemIds": [
    ],
  • "itemToMakeIds": [
    ],
  • "reservedForTypes": [
    ],
  • "reservedForIds": [
    ],
  • "inventoryEventIds": [
    ],
  • "actionDateFrom": "2019-08-24T14:15:22Z",
  • "actionDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Inventory Event Details

Partially update an inventory event's details

path Parameters
inventoryEventId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "externalReferences": {
    }
}

Update a specific inventory event details

path Parameters
inventoryEventId
required
string = 24 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "externalReferences": {
    }
}

Get a specific inventory event

path Parameters
inventoryEventId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "externalReferences": {
    }
}

Inventory Lot

Create a new inventory lot.

Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

The name of the lot. It is not guaranteed to be unique inventory-wide, but only within an item.

itemId
required
string = 24 characters

The item id that is associated to this lot. Please reference /api/items endpoint.

expirationDate
string or null <date-time>

The date that this lot is supposed to expire.

Responses

Request samples

Content type
{
  • "name": "string",
  • "itemId": "stringstringstringstring",
  • "expirationDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "string"
}

Get an inventory lot.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "system": true,
  • "custom": true,
  • "expirationDate": "2019-08-24T14:15:22Z"
}

Find inventory lots based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter lots based on their name.

itemIds
Array of strings or null

Item ids to match. Please reference /api/items endpoint.

system
boolean or null

Filter by whether the lot is considered a system-generated lot.

Responses

Request samples

Content type
{
  • "name": "string",
  • "itemIds": [
    ],
  • "system": true
}

Response samples

Content type
[
  • {
    }
]

Inventory Transactions

Finds inventory transactions based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
itemIds
Array of strings or null

Filter inventory transactions based on item identifiers.

object (DtoCommonDateRangeFilter)

Date range used for filters

sourceType
string (V2InventoryDataEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"
relatedEntityType
string (V2InventoryDataEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"
relatedEntityId
string or null

The transaction's related entity identifier

Responses

Request samples

Content type
{
  • "itemIds": [
    ],
  • "dateRange": {
    },
  • "sourceType": "purchaseOrder",
  • "relatedEntityType": "purchaseOrder",
  • "relatedEntityId": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Invoice

Get a specific invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "status": "new",
  • "customerId": "stringstringstringstring",
  • "currencyInfo": {
    },
  • "issueDate": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "companyInfoId": "stringstringstringstring",
  • "salesOrderId": "stringstringstringstring",
  • "customerPONumber": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "total": 0.1,
  • "subtotal": 0.1,
  • "lineItemsTotal": 0.1,
  • "notesToCustomer": "string",
  • "billingAddress": {
    },
  • "customFields": {
    },
  • "isDeposit": true,
  • "deleted": true
}

Partially update an invoice

path Parameters
invoiceId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "status": "new",
  • "customerId": "stringstringstringstring",
  • "currencyInfo": {
    },
  • "issueDate": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "companyInfoId": "stringstringstringstring",
  • "salesOrderId": "stringstringstringstring",
  • "customerPONumber": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "total": 0.1,
  • "subtotal": 0.1,
  • "lineItemsTotal": 0.1,
  • "notesToCustomer": "string",
  • "billingAddress": {
    },
  • "customFields": {
    },
  • "isDeposit": true,
  • "deleted": true
}

Update an invoice

path Parameters
invoiceId
required
string = 24 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "status": "new",
  • "customerId": "stringstringstringstring",
  • "currencyInfo": {
    },
  • "issueDate": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "companyInfoId": "stringstringstringstring",
  • "salesOrderId": "stringstringstringstring",
  • "customerPONumber": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "total": 0.1,
  • "subtotal": 0.1,
  • "lineItemsTotal": 0.1,
  • "notesToCustomer": "string",
  • "billingAddress": {
    },
  • "customFields": {
    },
  • "isDeposit": true,
  • "deleted": true
}

Download the PDF for an invoice

The document is rendered when you call this, from the invoice's current state and the tenant's PDFs & Emails settings, so it is the same document the product's Download button produces rather than a stored copy of one sent earlier. The date format on the rendered document is presentational and is not part of this contract — read dates from the invoice's JSON representation rather than parsing them out of the PDF.

path Parameters
invoiceId
required
string = 24 characters

Responses

Find invoices based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter invoices to only given numbers

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

status
string (InvoiceStatusEnum)
Enum: "new" "needsApproval" "approved" "issued" "paid"

Invoice status

issueDateFrom
string or null <date-time>

Filter to invoices whose issue date falls on or after this date. The whole day is included, so any time component is ignored.

issueDateTo
string or null <date-time>

Filter to invoices whose issue date falls on or before this date. The whole day is included, so an invoice issued later that same day still matches.

Responses

Request samples

Content type
{
  • "numbers": [
    ],
  • "externalReference": {
    },
  • "status": "new",
  • "issueDateFrom": "2019-08-24T14:15:22Z",
  • "issueDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Update an invoice status

path Parameters
invoiceId
required
string = 24 characters
Request Body schema:
required
status
required
string (InvoiceStatusEnum)
Enum: "new" "needsApproval" "approved" "issued" "paid"

Invoice status

paidDate
string or null <date-time>

The date that the invoice was paid.

Responses

Request samples

Content type
{
  • "status": "new",
  • "paidDate": "2019-08-24T14:15:22Z"
}

Invoice Deposit Adjustment Line Item

Get a specific deposit adjustment line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "accountingDetails": {
    }
}

Get a list of deposit adjustment lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Deposit Line Item

Get a specific deposit line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "amount": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of deposit lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Discount Line Item

Get the discount line item for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "price": 0.1
}

Invoice Fee Line Item

Get a specific fee line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific fee line item for a purchase order

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific fee line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of fee lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Line Item

Get a specific line item for an invoice of generic type

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "type": "part",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "subtotal": 0.1,
  • "discountedSubtotal": 0.1,
  • "name": "string",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "taxCodeId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "externalReferences": {
    },
  • "isTaxable": true,
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of lines items for an invoice, regardless of type

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Note

TO BE REMOVED 08/18/2023 - Get a list of notes for an invoice Deprecated

Use root /note API instead

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Part Line Item

Get a specific part line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "overrideTaxRate": true,
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "shipmentIds": [
    ],
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific part line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "overrideTaxRate": true,
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "shipmentIds": [
    ],
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific part line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "overrideTaxRate": true,
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "shipmentIds": [
    ],
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of part lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Refund Line Item

Get a specific refund line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "itemId": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific refund line item for a purchase order

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "itemId": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific refund line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "itemId": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of refund lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Invoice Shipping Charge Line Item

Get the shipping charge line item for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "amount": 0.1,
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Invoice Tax Line Item

Get a specific tax line item for an invoice

path Parameters
invoiceId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "externalReferences": {
    },
  • "price": 0.1,
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "taxCodeEditable": true,
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of tax lines items for an invoice

path Parameters
invoiceId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Item

Add a revision to an item

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
revision
required
string [ 1 .. 200 ] characters

The revision to be created.

archiveSourceItem
boolean or null

Indicate whether we should archive the source item. This will default to false.

Responses

Request samples

Content type
{
  • "revision": "string",
  • "archiveSourceItem": true
}

Response samples

Content type
{
  • "id": "string"
}

Create a new item

Request Body schema:
required
number
required
string [ 1 .. 200 ] characters

The name to give the item. Must be unique to all active items.

description
string [ 0 .. 2000 ] characters

The verbose description to give the item.

revision
string or null [ 1 .. 200 ] characters

Revision name

itemOrigin
required
string (DomainItemsAndInventoryItemOrigin)
Enum: "make" "buy" "makeOrBuy" "customerSupplied" "kit" "none"
unitTypeName
required
string non-empty

The unit of measure type, ex: Pieces, Volume, Weight, Area

unitOfMeasureName
required
string non-empty

The unit of measure name. Options available depend on the selected UnitTypeName. For Pieces, you might have a UOM of Piece, Set or Case. For Volume options include Liter, Milliliter, etc.

isSellable
boolean or null

Define if this item is able to be sold/sellable.

isSingleUseItem
boolean or null

Indicate if this item is intended for single use.

isLotTracked
boolean or null

Indicate if this item is going to be lot-tracked.

isNonInventory
boolean or null

Indicate if this item is a non-inventory item — one that supports the business but is never held in inventory. Only a buy item that is not sellable can be non-inventory; anything else is rejected with a 400. Defaults to false.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

accountingCode2Id
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

materialCodeId
string or null = 24 characters

Item material code key identifier. Please reference /api/material-codes endpoint.

categoryId
string or null = 24 characters

Item category code key identifier. Please reference /api/item-categories endpoint.

gradeId
string or null = 24 characters

Item grade code key identifier. Please reference /api/grade-codes endpoint.

shapeId
string or null = 24 characters

Item shape code key identifier. Please reference /api/shape-codes endpoint.

gaugeId
string or null = 24 characters

Item gauge code key identifier. Please reference /api/gauge-codes endpoint.

width
number or null <double> >= 0

Item width

height
number or null <double> >= 0

Item height

length
number or null <double> >= 0

Item length

weight
number or null <double> >= 0

Item weight

minimumStockOnHand
number or null <double> >= 0

Item minimum stock on hand.

minimumProductionQuantity
number or null <double> >= 0

Item minimum production quantity for a manufacturing run.

internalNotes
string or null [ 1 .. 2000 ] characters

Internal item notes.

Array of objects or null (CommonUnitOfMeasureConversionDto)

Unit of measure conversions for sellable items.

isTaxable
boolean or null

Whether or not this item is taxable (default)

buildToOrder
boolean or null

Whether or not this item is build to order (jobs are made from sales orders, not overall demand)

buildToStock
boolean or null

Whether or not this item is build to stock (jobs are created from overall demand, not sales orders)

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "number": "string",
  • "description": "string",
  • "revision": "string",
  • "itemOrigin": "make",
  • "unitTypeName": "string",
  • "unitOfMeasureName": "string",
  • "isSellable": true,
  • "isSingleUseItem": true,
  • "isLotTracked": true,
  • "isNonInventory": true,
  • "accountingCodeId": "stringstringstringstring",
  • "accountingCode2Id": "stringstringstringstring",
  • "materialCodeId": "stringstringstringstring",
  • "categoryId": "stringstringstringstring",
  • "gradeId": "stringstringstringstring",
  • "shapeId": "stringstringstringstring",
  • "gaugeId": "stringstringstringstring",
  • "width": 0.1,
  • "height": 0.1,
  • "length": 0.1,
  • "weight": 0.1,
  • "minimumStockOnHand": 0.1,
  • "minimumProductionQuantity": 0.1,
  • "internalNotes": "string",
  • "salesUnitOfMeasureConversions": [
    ],
  • "isTaxable": true,
  • "buildToOrder": true,
  • "buildToStock": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Create a new item cut from an activated material shape. The shape determines the item's material thickness, material form and length unit, so those are not sent on the request — select the shape that carries the combination you want. The item is always created as a Buy item measured in Pieces, its number is generated from the shape and the dimensions supplied (e.g. `Steel A36 Sheet 1/4": 48"x120"`), and its weight is calculated from the shape's density. The shape must already be activated for the shop. An id that exists only in the materials database is rejected with a 404 — activate it first with the Material Activate endpoint. This endpoint never activates a shape, because activating one also un-archives every existing non-remnant item that uses it. A material item's number is derived rather than caller-supplied, so the same shape and dimensions always resolve to the same item. If that item already exists it is returned as-is instead of a duplicate being created, and if it was archived it is un-archived — meaning a successful response may carry the id of an item that predates the request. Check whether an item with the expected number already exists if the distinction matters to your integration. The number does not encode remnant state, so `isRemnant` is honoured only when a new item is created and is ignored on that collision.

Request Body schema:
required
materialShapeId
required
string non-empty

The id of the material shape to cut the item from. Must be a shape that is already activated for this shop, as returned by the Material List endpoint with active true; an id that is only present in the materials database is rejected with a 404. Activate it first with the Material Activate endpoint.

length
required
number <double>

The length of the piece, expressed in the material shape's length unit (inch, foot, millimeter, ...). Required for every shape, and must be greater than zero.

width
number or null <double>

The width of the piece, expressed in the material shape's length unit. Required when the material shape is planar (sheet, plate, tread plate), because those shapes are sized by length and width, and the width determines both the generated item number and the item's calculated weight; omitting it is rejected with a 400 rather than defaulted. Must be omitted when the material shape is linear (bar, tube, pipe, beam, angle, channel), because those shapes are sized by length alone and their width is fixed by the shape; supplying it is rejected with a 400 rather than ignored, so a caller is never left believing a width was stored.

isRemnant
boolean or null

Set true to create the item as a remnant — an offcut left over from a larger piece. Defaults to false. A remnant is excluded from the shop's default buy-item accounting code, so it is created with no accounting code unless one is assigned afterwards.

Applies only when a new item is created. The generated number encodes the shape and the dimensions but not remnant state, so a request whose number already resolves to an existing item returns that item unchanged, keeping whatever remnant state it already had.

Responses

Request samples

Content type
{
  • "materialShapeId": "string",
  • "length": 0.1,
  • "width": 0.1,
  • "isRemnant": true
}

Response samples

Content type
{
  • "id": "string"
}

Get a specific item

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": "string",
  • "description": "string",
  • "itemOrigin": "make",
  • "unitTypeName": "string",
  • "unitOfMeasureName": "string",
  • "revision": {
    },
  • "barCodeNumber": "string",
  • "isSellable": true,
  • "isArchived": true,
  • "isNonInventory": true,
  • "accountingCodeId": "stringstringstringstring",
  • "accountingCode2Id": "stringstringstringstring",
  • "materialCodeId": "stringstringstringstring",
  • "gradeId": "stringstringstringstring",
  • "shapeId": "stringstringstringstring",
  • "gaugeId": "stringstringstringstring",
  • "categoryId": "string",
  • "width": 0.1,
  • "height": 0.1,
  • "length": 0.1,
  • "weight": 0.1,
  • "materialWeight": 0.1,
  • "minimumStockOnHand": 0.1,
  • "minimumProductionQuantity": 0.1,
  • "customFields": {
    },
  • "tags": [
    ],
  • "internalNotes": "string",
  • "salesUnitOfMeasureConversions": [
    ],
  • "externalReferences": {
    },
  • "isTaxable": true,
  • "buildToOrder": true,
  • "buildToStock": true,
  • "isSingleUseItem": true,
  • "isLotTracked": true,
  • "shipping": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "customerTiers": [
    ],
  • "materialDetails": {
    },
  • "accountingDetails": {
    },
  • "materialVendorDetails": [
    ],
  • "vendorDetails": [
    ],
  • "customerDetails": [
    ],
  • "qualityPlanStatus": "needsApproval",
  • "needsQualityPlan": true
}

Partially update an item

path Parameters
itemId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": "string",
  • "description": "string",
  • "itemOrigin": "make",
  • "unitTypeName": "string",
  • "unitOfMeasureName": "string",
  • "revision": {
    },
  • "barCodeNumber": "string",
  • "isSellable": true,
  • "isArchived": true,
  • "isNonInventory": true,
  • "accountingCodeId": "stringstringstringstring",
  • "accountingCode2Id": "stringstringstringstring",
  • "materialCodeId": "stringstringstringstring",
  • "gradeId": "stringstringstringstring",
  • "shapeId": "stringstringstringstring",
  • "gaugeId": "stringstringstringstring",
  • "categoryId": "string",
  • "width": 0.1,
  • "height": 0.1,
  • "length": 0.1,
  • "weight": 0.1,
  • "materialWeight": 0.1,
  • "minimumStockOnHand": 0.1,
  • "minimumProductionQuantity": 0.1,
  • "customFields": {
    },
  • "tags": [
    ],
  • "internalNotes": "string",
  • "salesUnitOfMeasureConversions": [
    ],
  • "externalReferences": {
    },
  • "isTaxable": true,
  • "buildToOrder": true,
  • "buildToStock": true,
  • "isSingleUseItem": true,
  • "isLotTracked": true,
  • "shipping": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "customerTiers": [
    ],
  • "materialDetails": {
    },
  • "accountingDetails": {
    },
  • "materialVendorDetails": [
    ],
  • "vendorDetails": [
    ],
  • "customerDetails": [
    ],
  • "qualityPlanStatus": "needsApproval",
  • "needsQualityPlan": true
}

Update a specific item

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
number
string or null [ 1 .. 200 ] characters

The item number. If omitted, the current number is kept. Renaming enforces number uniqueness (400 on collision) and updates every reference to the item — BOM inputs, usage, purchase orders, and the system lot. Uniqueness is scoped to number + revision: when renaming an item with multiple revisions, rename every revision of the family or the revisions will split under different numbers.

description
string or null [ 0 .. 2000 ] characters

Item description.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

accountingCode2Id
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

materialCodeId
string or null = 24 characters

Item material code key identifier. Please reference /api/material-codes endpoint.

gradeId
string or null = 24 characters

Item grade code key identifier. Please reference /api/grade-codes endpoint.

shapeId
string or null = 24 characters

Item shape code key identifier. Please reference /api/shape-codes endpoint.

gaugeId
string or null = 24 characters

Item gauge code key identifier. Please reference /api/gauge-codes endpoint.

categoryId
string or null = 24 characters

Item category code key identifier. Please reference /api/item-categories endpoint.

width
number or null <double> >= 0

Item width

height
number or null <double> >= 0

Item height

length
number or null <double> >= 0

Item length

weight
number or null <double> >= 0

Item weight

minimumStockOnHand
number or null <double> >= 0

Item minimum stock on hand.

minimumProductionQuantity
number or null <double> >= 0

Item minimum production quantity for a manufacturing run.

internalNotes
string or null [ 1 .. 2000 ] characters

Internal item notes.

unitOfMeasureName
string or null

The item's stocking unit of measure — the unit every inventory quantity, cost, and transaction on the item is expressed in. If omitted — or sent as null, or as a string that is empty or only whitespace — the current unit of measure is kept; there is no way to clear it. The unit must belong to the item's existing unit type (a Pieces item accepts Piece, Set or Case); the unit type itself cannot be changed after the item is created. Changing the unit is rejected while anything already carries a unit that the change would invalidate — the item being in use by a quote, sales order, purchase order, job, invoice or another item's routing, holding inventory on hand, or having a price break that carries a price (item, vendor, customer, or customer-tier) — because none of those is converted when the unit changes. The 400 names which one blocked the change. Each condition is read as the item stands before the update, so clearing a blocker and changing the unit in one request is still rejected — clear it first, then change the unit in a second request. Sales unit of measure conversions are the exception: they are replaced wholesale by every update, so changing the unit while sending none is accepted, and a request that changes the unit while conversions are present — sent on the update, or carried forward from the item by a patch — is rejected. An item with no unit type recorded cannot have its unit changed at all. Surrounding whitespace is trimmed; the remainder is matched case-sensitively, as on item create.

Array of objects or null (CommonUnitOfMeasureConversionDto)

Unit of measure conversions for sellable items.

isTaxable
boolean or null

Whether or not this item is taxable (default)

isLotTracked
boolean or null

Whether this item is lot-tracked. If omitted, the current setting is kept.

isNonInventory
boolean or null

Whether this item is a non-inventory item — one that supports the business but is never held in inventory. Turning it on is rejected with a 400 unless the item is a buy item that is not sellable; an item that is already non-inventory can restate that value, so a read-modify-write update of a legacy item does not start failing. Setting this also keeps the item's inventoried state in step: a non-inventory item is never inventoried. If omitted, the current setting is kept.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "number": "string",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "accountingCode2Id": "stringstringstringstring",
  • "materialCodeId": "stringstringstringstring",
  • "gradeId": "stringstringstringstring",
  • "shapeId": "stringstringstringstring",
  • "gaugeId": "stringstringstringstring",
  • "categoryId": "stringstringstringstring",
  • "width": 0.1,
  • "height": 0.1,
  • "length": 0.1,
  • "weight": 0.1,
  • "minimumStockOnHand": 0.1,
  • "minimumProductionQuantity": 0.1,
  • "internalNotes": "string",
  • "unitOfMeasureName": "string",
  • "salesUnitOfMeasureConversions": [
    ],
  • "isTaxable": true,
  • "isLotTracked": true,
  • "isNonInventory": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": "string",
  • "description": "string",
  • "itemOrigin": "make",
  • "unitTypeName": "string",
  • "unitOfMeasureName": "string",
  • "revision": {
    },
  • "barCodeNumber": "string",
  • "isSellable": true,
  • "isArchived": true,
  • "isNonInventory": true,
  • "accountingCodeId": "stringstringstringstring",
  • "accountingCode2Id": "stringstringstringstring",
  • "materialCodeId": "stringstringstringstring",
  • "gradeId": "stringstringstringstring",
  • "shapeId": "stringstringstringstring",
  • "gaugeId": "stringstringstringstring",
  • "categoryId": "string",
  • "width": 0.1,
  • "height": 0.1,
  • "length": 0.1,
  • "weight": 0.1,
  • "materialWeight": 0.1,
  • "minimumStockOnHand": 0.1,
  • "minimumProductionQuantity": 0.1,
  • "customFields": {
    },
  • "tags": [
    ],
  • "internalNotes": "string",
  • "salesUnitOfMeasureConversions": [
    ],
  • "externalReferences": {
    },
  • "isTaxable": true,
  • "buildToOrder": true,
  • "buildToStock": true,
  • "isSingleUseItem": true,
  • "isLotTracked": true,
  • "shipping": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "customerTiers": [
    ],
  • "materialDetails": {
    },
  • "accountingDetails": {
    },
  • "materialVendorDetails": [
    ],
  • "vendorDetails": [
    ],
  • "customerDetails": [
    ],
  • "qualityPlanStatus": "needsApproval",
  • "needsQualityPlan": true
}

Get the can-make quantities for an item. Returns how much of this item can be produced from current subcomponent inventory (on-hand and available).

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "canMakeFromOnHand": 0.1,
  • "canMakeFromAvailable": 0.1
}

Get the unit cost Fulcrum's BOM costing assigns to an item consumed as a routing input at a given quantity, and the basis it used.

path Parameters
itemId
required
string = 24 characters

Id of the item to cost.

query Parameters
quantity
required
number <double>

Total quantity of the item consumed, in its inventory unit of measure. Must be greater than zero and at most 2147483647.

Responses

Response samples

Content type
{
  • "unitCost": 0.1,
  • "basis": "none",
  • "vendor": {
    },
  • "priceBreakQuantity": 0,
  • "currencyCode": "string",
  • "unitOfMeasureName": "string",
  • "unconvertedVendorCurrencyCode": "string"
}

Get an item's purchase history — every time it was bought, from whom, at what price.

path Parameters
itemId
required
string = 24 characters

Id of the item to report on.

query Parameters
months
integer <int32>
Default: 12

How many months back to include. Defaults to 12; values outside 1–60 are clamped.

Responses

Response samples

Content type
{
  • "item": {
    },
  • "windowMonths": 0,
  • "totalPurchaseCount": 0,
  • "purchases": [
    ],
  • "summary": {
    }
}

TO BE REMOVED 11/02/2023 - Find items based on search parameters. Deprecated

Use V2 which includes a list of number filters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

revision
string or null [ 1 .. 200 ] characters

Filter to items who's revision matches the given string

object (CommonCustomFieldSearchDto)

Custom field associated to an entity.

latestRevision
boolean

Indicate whether we want the latest revision(s) of the items.

itemIds
Array of strings or null

Filter to items whose ids are in the list

descriptionFilter
string or null

Filter to items whose description contains this text. Matching is a case-insensitive substring test; it is not a phrase or keyword search and supports no operators.

isArchived
boolean or null

Include or exclude archived items

modifiedAfterUtc
string or null <date-time>

Filters to items modified at or after (inclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Unlike the other list endpoints, this bound is inclusive, so with modifiedBeforeUtc it selects the window [after, before). An item's modifiedUtc also advances when a file is attached to it, removed from it, moved onto or off it, or rewritten. Deleted items never appear in this list.

modifiedBeforeUtc
string or null <date-time>

Filters to items modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Each window boundary belongs to exactly one window; when polling, end each window a lag before the current time that is longer than any write takes to commit, since an item's stamp is its write time, not its commit time.

Responses

Request samples

Content type
{
  • "number": "string",
  • "revision": "string",
  • "customField": {
    },
  • "latestRevision": true,
  • "itemIds": [
    ],
  • "descriptionFilter": "string",
  • "isArchived": true,
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

List the cost breakdowns recorded for an item by the quote lines, sales order lines and jobs that costed it, newest calculatedOn first and highest id next. Breakdowns on deleted documents, and ones no document references, are left out.

path Parameters
itemId
required
string = 24 characters

The item

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

Which breakdown types to list

types
Array of strings or null (ItemsAndInventoryRoutingsCostBreakdownType)
Enum: "estimated" "inProgressJob" "completedJob" "cancelledJob"

Only cost breakdowns of these types. Omitted or empty returns every type.

Responses

Request samples

Content type
{
  • "types": [
    ]
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Find items based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
Array of objects or null (ItemNumberFilter) <= 50 items

Filter items based on numbers

object (CommonCustomFieldSearchDto)

Custom field associated to an entity.

Array of objects or null (CommonCustomFieldSearchDto) <= 50 items

Filter items based on custom fields Note: these will be OR'd with each other and are not additive in filtering.

latestRevision
boolean

Indicate whether we want the latest revision(s) of the items.

itemIds
Array of strings or null <= 50 items

Filter to items whose ids are in the list

descriptionFilter
string or null

Filter to items whose description contains this text. Matching is a case-insensitive substring test; it is not a phrase or keyword search and supports no operators.

isArchived
boolean or null

Include or exclude archived items

includeUsageData
boolean

If set to true, data on where the item is being used will be included in the results

includeVendorData
boolean

If set to true, vendor details about the item will be included in the results

includeCustomerData
boolean

If set to true, customer details about the item will be included in the results

includeCustomerTierData
boolean

If set to true, customer tier details about the item will be included in the results

vendorId
string or null

If provided, filter to items that are produced by this vendor.

modifiedAfterUtc
string or null <date-time>

Filters to items modified at or after (inclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Unlike the other list endpoints, this bound is inclusive, so with modifiedBeforeUtc it selects the window [after, before).

modifiedUtc also advances when a file is attached to, removed from, moved onto or off, or rewritten on the item. To poll without missing changes: set modifiedBeforeUtc to the current time minus a short lag (for example two minutes), so in-flight writes have committed. Request the window sorted by modifiedUtc with take of 1000 or less and no skip. If the page is full (it holds take items), the window is too wide: halve it, setting modifiedBeforeUtc to modifiedAfterUtc + (modifiedBeforeUtc - modifiedAfterUtc) / 2, and request again. Otherwise process the page and continue with modifiedAfterUtc set to this window's modifiedBeforeUtc. If a full page holds a single modifiedUtc value, halving cannot narrow it further: page through that one instant with skip and take, since items sharing a modifiedUtc are ordered by id. Deleted items never appear in this list. To learn of deletions, reconcile separately.

modifiedBeforeUtc
string or null <date-time>

Filters to items modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Each window boundary belongs to exactly one window; choose a lag longer than any write takes to commit, since an item's stamp is its write time, not its commit time.

Responses

Request samples

Content type
{
  • "numbers": [
    ],
  • "customField": {
    },
  • "customFields": [
    ],
  • "latestRevision": true,
  • "itemIds": [
    ],
  • "descriptionFilter": "string",
  • "isArchived": true,
  • "includeUsageData": true,
  • "includeVendorData": true,
  • "includeCustomerData": true,
  • "includeCustomerTierData": true,
  • "vendorId": "string",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

TO BE REMOVED 10/13/2023 - Pick inventory against a specific item. Deprecated

Use /inventory/pick API instead

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
secondaryType
required
string (InventoryEventSecondaryType)
Enum: "pick" "receive" "override" "revert" "deposit" "create" "consume" "ship" "sold" "transferOut" "transferIn" "found" "expired" "damaged" "lost" "returnVendor" "returnStock" "receivedNoPo" "returnIncrease" "returnDecrease" "otherIncrease" "otherDecrease" "scrap" "waste" "transferredFromSalesOrder" "overrideItemValue" "transferFromLot" "transferToLot" "stockAdjustmentIncrease" "stockAdjustmentDecrease" "stockTake"

Secondary, verbose description for an event.

lotId
string or null = 24 characters

Lot identifier for this block of inventory.

locationId
string or null = 24 characters

Location id that inventory is placed into.

quantity
number or null <double> >= 0

Location id that inventory is placed into.

actionDate
string or null <date-time>

The moment in time where this inventory event action occurs. If not provided, this will default to the current date/time.

source
string (InventoryEnumEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"

Indicator for the initial source of the event.

url
string or null <uri>

The source url of the event.

relatedSource
string (InventoryEnumEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"

Indicator for the initial source of the event.

relatedEntityId
string or null

Entity id for tying this event back to a related entity.

note
string or null

Notes associated to this transaction.

Responses

Request samples

Content type
{
  • "secondaryType": "pick",
  • "lotId": "stringstringstringstring",
  • "locationId": "stringstringstringstring",
  • "quantity": 0.1,
  • "actionDate": "2019-08-24T14:15:22Z",
  • "source": "purchaseOrder",
  • "relatedSource": "purchaseOrder",
  • "relatedEntityId": "string",
  • "note": "string"
}

TO BE REMOVED 10/13/2023 - Receive inventory against a specific item. Deprecated

Use /inventory/receive API instead

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
secondaryType
required
string (InventoryEventSecondaryType)
Enum: "pick" "receive" "override" "revert" "deposit" "create" "consume" "ship" "sold" "transferOut" "transferIn" "found" "expired" "damaged" "lost" "returnVendor" "returnStock" "receivedNoPo" "returnIncrease" "returnDecrease" "otherIncrease" "otherDecrease" "scrap" "waste" "transferredFromSalesOrder" "overrideItemValue" "transferFromLot" "transferToLot" "stockAdjustmentIncrease" "stockAdjustmentDecrease" "stockTake"

Secondary, verbose description for an event.

lotId
string or null = 24 characters

Lot identifier for this block of inventory.

locationId
string or null = 24 characters

Location id that inventory is placed into.

quantity
number or null <double> >= 0

Location id that inventory is placed into.

actionDate
string or null <date-time>

The moment in time where this inventory event action occurs. If not provided, this will default to the current date/time.

source
string (InventoryEnumEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"

Indicator for the initial source of the event.

url
string or null <uri>

The source url of the event.

relatedSource
string (InventoryEnumEventSourceType)
Enum: "purchaseOrder" "job" "shipment" "shipmentLineItem" "shipping" "receiving" "item" "workOrder" "salesOrder" "jobOperation" "workOrderOperation" "fulfillment" "itemToMakeMaterialRemnant" "poRcvValueAdj"

Indicator for the initial source of the event.

relatedEntityId
string or null

Entity id for tying this event back to a related entity.

note
string or null

Notes associated to this transaction.

Responses

Request samples

Content type
{
  • "secondaryType": "pick",
  • "lotId": "stringstringstringstring",
  • "locationId": "stringstringstringstring",
  • "quantity": 0.1,
  • "actionDate": "2019-08-24T14:15:22Z",
  • "source": "purchaseOrder",
  • "relatedSource": "purchaseOrder",
  • "relatedEntityId": "string",
  • "note": "string"
}

Item Custom Fields

Update (selectively) custom fields on an item.

path Parameters
itemId
required
string = 24 characters

The Item identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on an item.

path Parameters
itemId
required
string = 24 characters

The Item identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Item Customer

Create a new item customer

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
customerId
required
string = 24 characters

Customer id associated to this entity. Please reference /api/customers endpoint.

customerItemNumber
string or null [ 1 .. 200 ] characters

The item number for this customer.

customerItemName
string or null [ 1 .. 200 ] characters

The item name for this customer.

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "customerItemNumber": "string",
  • "customerItemName": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific item customer

path Parameters
itemId
required
string = 24 characters

The id of the item to remove a customer from

itemCustomerId
required
string = 36 characters

The id of the item customer to delete

Responses

Update a specific item customer

path Parameters
itemId
required
string = 24 characters

The id of the item to modify customers for

itemCustomerId
required
string = 36 characters

The id of the item customer.

Request Body schema:
required

The new data to apply to the given customer detail

customerItemNumber
string or null [ 1 .. 200 ] characters

The item number for this customer.

customerItemName
string or null [ 1 .. 200 ] characters

The item name for this customer.

Responses

Request samples

Content type
{
  • "customerItemNumber": "string",
  • "customerItemName": "string"
}

Get a list of customers for an item

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Item Material Vendor

Get a list of vendors for a material-based item

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Create a new item vendor

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
vendorId
required
string = 24 characters

Vendor id associated to this entity. Please reference /api/vendors endpoint.

vendorItemNumber
string or null [ 1 .. 200 ] characters

The item number for this vendor.

vendorItemName
string or null [ 1 .. 200 ] characters

The item name for this vendor.

notes
string or null [ 1 .. 2000 ] characters

Notes to the vendor.

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Update a specific item material vendor

path Parameters
itemId
required
string = 24 characters

The id of the item to modify vendors for

materialVendorId
required
string [ 24 .. 36 ] characters

The id of the material-item vendor.

Request Body schema:
required

The new data to apply to the given vendor detail

vendorItemNumber
string or null [ 1 .. 200 ] characters

The item number for this vendor.

vendorItemName
string or null [ 1 .. 200 ] characters

The item name for this vendor.

notes
string or null [ 1 .. 2000 ] characters

Notes to the vendor.

Responses

Request samples

Content type
{
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "vendorId": "stringstringstringstring",
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "notes": "string"
}

Item PriceBreaks

List purchase price breaks for an item.

path Parameters
itemId
required
string = 24 characters

The id of the item.

Request Body schema:

Optional filters to narrow the result set.

vendorId
string or null = 24 characters

Restrict to price breaks for the given vendor.

currencyCode
string or null

Restrict to price breaks in the given currency.

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "currencyCode": "string"
}

Response samples

Content type
[
  • {
    }
]

List sales price breaks for an item, including the item's base price, customer-specific price breaks, and customer-tier price breaks.

path Parameters
itemId
required
string = 24 characters

The id of the item.

Request Body schema:

Optional filters to narrow the result set.

customerId
string or null = 24 characters

Restrict to price breaks for the given customer.

customerTierId
string or null = 24 characters

Restrict to price breaks for the given customer tier.

currencyCode
string or null

Restrict to price breaks in the given currency.

baseOnly
boolean or null

When true, include only the item's base price (no customer or customer tier).

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "customerTierId": "stringstringstringstring",
  • "currencyCode": "string",
  • "baseOnly": true
}

Response samples

Content type
[
  • {
    }
]

Create or update a purchase price break for an item. The price break is identified by the combination of (item, vendor, currency, unit of measure): if a match exists it is replaced, otherwise a new price break is created.

path Parameters
itemId
required
string = 24 characters

The id of the item.

Request Body schema:
required

The price break to upsert.

vendorId
required
string = 24 characters

Identifier of the vendor this price break applies to.

currencyCode
string or null

ISO 4217 currency code. Null is treated as the vendor's currency (or, if the vendor has no currency, the company's primary currency) for identity matching. When matching an existing break, that break's stored CurrencyCode is preserved. On insert, the value stored is the supplied value or the vendor's currency if none was supplied.

unitOfMeasureName
string or null

Purchasing unit of measure. Null indicates the item's default unit of measure. Same null/default-equivalence rules as FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.CurrencyCode.

unitPrice
number or null <double> >= 0

The unit price at quantity 1. Required.

vendorItemNumber
string or null [ 1 .. 200 ] characters

The vendor's part number for this item, if different from the internal number.

vendorItemName
string or null [ 1 .. 200 ] characters

The vendor's part description for this item.

required
Array of objects (PriceBreakItemPriceBreakPointDto)

Quantity break points beyond quantity 1. The complete set of break points is replaced on each upsert; omit a quantity to remove it.

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "currencyCode": "string",
  • "unitOfMeasureName": "string",
  • "unitPrice": 0.1,
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "breakPoints": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "vendorId": "stringstringstringstring",
  • "currencyCode": "string",
  • "unitOfMeasureName": "string",
  • "unitPrice": 0.1,
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "breakPoints": [
    ],
  • "modifiedUtc": "2019-08-24T14:15:22Z"
}

Create or update a sales price break for an item. The price break is identified by the combination of (item, customer, customer tier, currency, sales unit of measure): if a match exists it is replaced, otherwise a new price break is created. Customer and customer tier are mutually exclusive. Leaving both null upserts the item's base price.

path Parameters
itemId
required
string = 24 characters

The id of the item.

Request Body schema:
required

The price break to upsert.

customerId
string or null = 24 characters

Identifier of the customer this price break applies to. Mutually exclusive with FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerTierId. Leave both null to upsert the item's base price.

customerTierId
string or null = 24 characters

Identifier of the customer tier this price break applies to. Mutually exclusive with FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerId. Leave both null to upsert the item's base price.

currencyCode
string or null

ISO 4217 currency code. Null indicates the company's primary currency. Null and the explicit primary currency code are treated as equivalent for identity matching; when matching an existing break, that break's stored CurrencyCode is preserved (legacy records may hold null even after primary is set, and downstream code distinguishes them). On insert, the value is stored exactly as supplied.

unitOfMeasureName
string or null

Sales unit of measure. Null indicates the item's default sales unit of measure. Same null/default-equivalence rules as FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CurrencyCode.

pricingType
required
string (DtoPriceBreakSalesPriceBreakPricingTypeEnum)
Enum: "price" "margin"

How a sales price break is calculated.

unitPrice
number or null <double> >= 0

The unit price at quantity 1. Required when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.PricingType is Price.

margin
number or null <double>

The margin percentage at quantity 1. Required when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.PricingType is Margin.

showOnPdf
boolean

Whether the unit/base price should be displayed on customer-facing PDFs.

required
Array of objects (PriceBreakItemPriceBreakPointDto)

Quantity break points beyond quantity 1. The complete set of break points is replaced on each upsert; omit a quantity to remove it.

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "customerTierId": "stringstringstringstring",
  • "currencyCode": "string",
  • "unitOfMeasureName": "string",
  • "pricingType": "price",
  • "unitPrice": 0.1,
  • "margin": 0.1,
  • "showOnPdf": true,
  • "breakPoints": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "customerId": "stringstringstringstring",
  • "customerTierId": "stringstringstringstring",
  • "currencyCode": "string",
  • "unitOfMeasureName": "string",
  • "pricingType": "price",
  • "unitPrice": 0.1,
  • "margin": 0.1,
  • "showOnPdf": true,
  • "breakPoints": [
    ],
  • "modifiedUtc": "2019-08-24T14:15:22Z"
}

Item Routing

Get a specific item routing input item

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "allowContinuousFlow": true
}

Update a specific item's routing

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
allowContinuousFlow
boolean or null

Allow an operation to start before previous operations in the routing end

Responses

Request samples

Content type
{
  • "allowContinuousFlow": true
}

Adds an input item to an item's routing

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Response samples

Content type
{
  • "id": "string"
}

Add multiple input items to an item's routing

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
required
Array of objects (ItemRoutingInputItemCreateDto) non-empty

The input items to add to an item.

Array (non-empty)
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "lineItems": [
    ]
}

Response samples

Content type
{
  • "ids": [
    ]
}

Deletes an input item from an item's routing

path Parameters
itemId
required
string = 24 characters
inputItemId
required
string = 36 characters

Responses

Get a specific item routing input item

path Parameters
itemId
required
string = 24 characters
inputItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

Update an input item for a specific item's routing

path Parameters
itemId
required
string = 24 characters
inputItemId
required
string = 36 characters
Request Body schema:
required
valueTypeUnits
number or null <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemUpdateDto.ValueType

valueType
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemUpdateDto.ValueTypeUnits. Omit to leave the line's fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Lists the input items for an item's routing

path Parameters
itemId
required
string = 24 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Adds an input material to an item's routing

path Parameters
itemId
required
string
Request Body schema:
required
materialId
required
string non-empty

The material id to be added. Please reference /api/materials endpoint.

costing
required
string (CommonEnumMaterialRequirementCostingEnum)
Enum: "fullCost" "usageBased"

Specifies the costing of the material.

Array of objects or null (ItemRoutingInputMaterialNestingCreateDto) non-empty

Nestings associated to this material indicating bounding box dimensions and production quantities. The estimated material cost is taken from one nesting (see useForEstimatedCosting); with no nesting, the material costs zero.

routingStepId
string or null = 36 characters

The routing step id. This value should be the Id of an operation on the routing being edited, as returned by that routing's operations list (for example items/{itemId}/routing/operations/list, or the sales-order part line item routing's operations/list).

Responses

Request samples

Content type
{
  • "materialId": "string",
  • "costing": "fullCost",
  • "nestings": [
    ],
  • "routingStepId": "stringstringstringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Deletes an input material from an item's routing

path Parameters
itemId
required
string = 24 characters
materialId
required
string <uuid>

Responses

Lists the input materials for an item's routing

path Parameters
itemId
required
string = 24 characters
query Parameters
skip
integer <int32> >= 0
take
integer <int32> [ 0 .. 5000 ]

Responses

Response samples

Content type
[
  • {
    }
]

Adds an input material nesting to an item's routing material

path Parameters
itemId
required
string
materialId
required
string <uuid>
Request Body schema:
required
d2
required
number <double>

Length of the nest's bounding box, in the material's dimensionUnits.

d3
required
number <double>

Width of the nest's bounding box, in the material's dimensionUnits. Still required (greater than zero) for a Linear material, but not used to cost it.

produces
required
integer <int32>

The quantity produced, given the bounding box dimensions (D2 x D3). Each part is costed at the material weight of the bounding box (D2 x D3 for Planar, D2 for Linear) divided by this quantity.

useForEstimatedCosting
boolean

Indicates if this nesting record will be used for estimated costing. A nesting generated by applying a nest to a quote takes precedence over this flag. When neither applies, the nesting with the largest produces not exceeding the quantity being costed is used, or the smallest produces when every nesting exceeds it. NOTE: Only one nesting record for a material can have this value set to true.

Responses

Request samples

Content type
{
  • "d2": 0.1,
  • "d3": 0.1,
  • "produces": 0,
  • "useForEstimatedCosting": true
}

Response samples

Content type
{
  • "id": "string"
}

Removes an input material nesting on an item's routing material

path Parameters
itemId
required
string
materialId
required
string <uuid>
nestingId
required
string <uuid>

Responses

Update an input material on an item's routing

path Parameters
itemId
required
string
inputMaterialId
required
string <uuid>
Request Body schema:
required
costing
required
string (CommonEnumMaterialRequirementCostingEnum)
Enum: "fullCost" "usageBased"

Specifies the costing of the material.

routingStepId
string or null = 36 characters

The routing step id. This value should be the Id of an operation on the routing being edited, as returned by that routing's operations list (for example items/{itemId}/routing/operations/list, or the sales-order part line item routing's operations/list).

Responses

Request samples

Content type
{
  • "costing": "fullCost",
  • "routingStepId": "stringstringstringstringstringstring"
}

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "materialId": "string",
  • "materialName": "string",
  • "materialShape": {
    },
  • "costing": "fullCost",
  • "nestings": [
    ],
  • "routingStepId": "stringstringstringstringstringstring"
}

Bulk reorganize routing operations for a specific item.

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
Array
systemOperationId
required
string = 24 characters

System Operation Id

order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Operation instructions. Will default to the instructions defined on the operation when not provided.

inputMaterialIds
Array of strings or null non-empty

The ids on the input material to associate to this operation. This value should be the Id from the response from items/{itemId}/routing/input-materials/list

Responses

Request samples

Content type
[
  • {
    }
]

Response samples

Content type
{
  • "ids": [
    ]
}

Create a routing operation for a specific item

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
systemOperationId
required
string = 24 characters

System Operation Id

order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Operation instructions. Will default to the instructions defined on the operation when not provided.

inputMaterialIds
Array of strings or null non-empty

The ids on the input material to associate to this operation. This value should be the Id from the response from items/{itemId}/routing/input-materials/list

Responses

Request samples

Content type
{
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string",
  • "inputMaterialIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific item routing operation

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters

Responses

Get a specific item routing operation

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "isOutsideProcessing": true,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "machineTrackingEnabled": true,
  • "instructions": "string"
}

Update a routing operation for a specific item

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
Request Body schema:
required
order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Instructions for this operation.

Responses

Request samples

Content type
{
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string"
}

Adds an operation item to an item's routing

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Response samples

Content type
{
  • "id": "string"
}

Deletes an operation item from an item's routing

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters

Responses

Get a specific item routing operation item

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

Update an operation item for a specific item's routing

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters
Request Body schema:
required
valueTypeUnits
number or null <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemUpdateDto.ValueType

valueType
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemUpdateDto.ValueTypeUnits. Omit to leave the line's fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Lists the operation items for an item's routing

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Lists the operations for an item's routing

path Parameters
itemId
required
string = 24 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to operations who's name contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Lists the operation materials for an item's routing

path Parameters
itemId
required
string = 24 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Item Vendor

Create a new item vendor

path Parameters
itemId
required
string = 24 characters
Request Body schema:
required
vendorId
required
string = 24 characters

Vendor id associated to this entity. Please reference /api/vendors endpoint.

vendorItemNumber
string or null [ 1 .. 200 ] characters

The item number for this vendor.

vendorItemName
string or null [ 1 .. 200 ] characters

The item name for this vendor.

price
number or null <double> >= 0

The price of this item for this vendor.

isPrimary
boolean

Signifies if this is the primary vendor for this item.

leadTimeInDays
integer or null <int32>

Lead time for this vendor.

notes
string or null [ 1 .. 2000 ] characters

Notes on this association.

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "price": 0.1,
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Get a list of vendors for an item

path Parameters
itemId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Update a specific item vendor

path Parameters
itemId
required
string = 24 characters

The id of the item to modify vendors for

itemVendorId
required
string = 36 characters

The id of the item vendor.

Request Body schema:
required

The new data to apply to the given vendor detail

vendorItemNumber
string or null [ 1 .. 200 ] characters

The item number for this vendor.

vendorItemName
string or null [ 1 .. 200 ] characters

The item name for this vendor.

price
number or null <double> >= 0

The price of this item for this vendor.

isPrimary
boolean

Signifies if this is the primary vendor for this item.

leadTimeInDays
integer or null <int32>

Lead time for this vendor.

notes
string or null [ 1 .. 2000 ] characters

Notes on this association.

Responses

Request samples

Content type
{
  • "vendorItemNumber": "string",
  • "vendorItemName": "string",
  • "price": 0.1,
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "notes": "string"
}

Item Category

Get an item category

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find item categories based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Item Class

Get an item class.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find item classes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Item Tag

Get an item category

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find item tags based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

The search parameters

name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Attach a tag to an item. This operation is idempotent - attaching a tag that is already present is a no-op.

path Parameters
itemId
required
string = 24 characters

The id of the item to tag.

tagId
required
string = 24 characters

The id of the tag to attach. Please reference the /api/item-tags/list endpoint.

Responses

Response samples

Content type
[
  • {
    }
]

Detach a tag from an item. This operation is idempotent - detaching a tag that is not present is a no-op.

path Parameters
itemId
required
string = 24 characters

The id of the item to modify.

tagId
required
string = 24 characters

The id of the tag to detach.

Responses

Response samples

Content type
[
  • {
    }
]

Replace the complete set of tags on an item. Tags currently on the item that are not in the request are removed.

path Parameters
itemId
required
string = 24 characters

The id of the item to modify.

Request Body schema:
required

The complete desired set of tag ids.

tagIds
required
Array of strings[ items = 24 characters ]

The complete desired set of tag identifiers for the item. Please reference the /api/item-tags/list endpoint. Duplicate ids are ignored. An empty set clears all tags from the item. At most FulcrumProduct.PublicApi.Dto.Item.Tag.ReplaceItemTagsDtoValidator.MAX_TAG_COUNT ids may be provided.

Responses

Request samples

Content type
{
  • "tagIds": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Job

Cancel a specific job

path Parameters
jobId
required
string = 24 characters

Responses

Create a new job

Request Body schema:
required
nameOfJob
string or null

Name of the job to create. If omitted, the default naming convention will be used

customerId
string or null = 24 characters

The id of the customer to be created

autoSchedule
boolean or null

Auto Schedule job. Defaults to FALSE if omitted.

note
string or null [ 1 .. 2000 ] characters

Note to customer. This will appear on PDFs.

priority
string (JobPriorityEnum)
Enum: "low" "moderate" "high"

Job priority

productionDueDate
string or null <date-time>

The date that the production of items on the job needs to be completed by.

earliestStartDate
string or null <date-time>

If set, this is the earliest date that the job should be scheduled to begin.

quantityToMake
required
number <double>

Quantity to make

salesOrderId
string or null = 24 characters

Sales Order Id the job is created for. If used, ItemToMakeId will be ignored.

salesOrderLineItemId
string or null = 36 characters

Sales Order Line Item Id the job is created for. If used, ItemToMakeId will be ignored.

salesOrderLineItemNameOverride
string or null

Sales Order Line Item - Name Override

itemToMakeId
string or null = 24 characters

Id of the item to make. If SalesOrderId/SalesOrderLineItemId is set then ItemToMakeId will be ignored

Responses

Request samples

Content type
{
  • "nameOfJob": "string",
  • "customerId": "stringstringstringstring",
  • "autoSchedule": true,
  • "note": "string",
  • "priority": "low",
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "quantityToMake": 0.1,
  • "salesOrderId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "salesOrderLineItemNameOverride": "string",
  • "itemToMakeId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Get a specific job

path Parameters
jobId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "parentItemId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "salesOrderId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledStartUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledEndUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "cancelledOnUtc": "2019-08-24T14:15:22Z",
  • "revenue": 0.1,
  • "notes": "string",
  • "workOrderIds": [
    ],
  • "workOrders": [
    ],
  • "status": "draft",
  • "priority": "low",
  • "customFields": {
    }
}

Partially update a job

path Parameters
jobId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "parentItemId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "salesOrderId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledStartUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledEndUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "cancelledOnUtc": "2019-08-24T14:15:22Z",
  • "revenue": 0.1,
  • "notes": "string",
  • "workOrderIds": [
    ],
  • "workOrders": [
    ],
  • "status": "draft",
  • "priority": "low",
  • "customFields": {
    }
}

Update a job

path Parameters
jobId
required
string = 24 characters
Request Body schema:
required
name
string or null

The name of the job

priority
string (JobPriorityEnum)
Enum: "low" "moderate" "high"

Job priority

quantityToMake
number or null <double>

The quantity the job should make

productionDueDate
string or null <date-time>

The production due date

earliestStartDate
string or null <date-time>

If set, this is the earliest date that the job should be scheduled to begin.

notes
string or null

The internal notes

Responses

Request samples

Content type
{
  • "name": "string",
  • "priority": "low",
  • "quantityToMake": 0.1,
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "parentItemId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "salesOrderId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledStartUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledEndUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "cancelledOnUtc": "2019-08-24T14:15:22Z",
  • "revenue": 0.1,
  • "notes": "string",
  • "workOrderIds": [
    ],
  • "workOrders": [
    ],
  • "status": "draft",
  • "priority": "low",
  • "customFields": {
    }
}

Get a specific job's tracking information

path Parameters
jobId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "parentItemId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "earliestStartDate": "2019-08-24T14:15:22Z",
  • "salesOrderId": "stringstringstringstring",
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledStartUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledEndUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "cancelledOnUtc": "2019-08-24T14:15:22Z",
  • "revenue": 0.1,
  • "notes": "string",
  • "workOrderIds": [
    ],
  • "workOrders": [
    ],
  • "status": "draft",
  • "priority": "low",
  • "customFields": {
    },
  • "previousOperations": [
    ],
  • "currentOperations": [
    ],
  • "nextOperations": [
    ],
  • "pendingOperations": [
    ],
  • "cancelledOperations": [
    ],
  • "estimatedSetupTimeInSeconds": 0.1,
  • "estimatedRunTimeInSeconds": 0.1,
  • "estimatedLaborTimeInSeconds": 0.1,
  • "estimatedMachineTimeInSeconds": 0.1,
  • "elapsedSetupTimeInSeconds": 0.1,
  • "elapsedRunTimeInSeconds": 0.1,
  • "elapsedLaborTimeInSeconds": 0.1,
  • "elapsedMachineTimeInSeconds": 0.1,
  • "customerName": "string"
}

Lists a job's in process tracking checkpoints together with every recorded operator reading.

The result is intentionally single-job-bounded to the job identified by jobId and is not paginated: it returns every checkpoint on the job (across its items to make and operations) with all recorded readings, and the readings axis is not independently bounded. Consumers should expect the response to scale with the job's routing size and production volume. Checkpoints are ordered by operation order then checkpoint order; each checkpoint's readings are ordered by sampling interval, then reading ordinal within the interval, then recorded time.

path Parameters
jobId
required
string = 24 characters
Request Body schema:
phase
string (InProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"

Public mirror of FulcrumProduct.Domain.InProcessTracking.InProcessTrackingFieldCheckpointPhase. Members mirror the domain enum one-to-one by underlying value (guarded by JobInProcessTrackingEnumParityTests) so it maps by a plain cast, decoupling the published contract from renames of the internal enum.

Responses

Request samples

Content type
{
  • "phase": "preOperation"
}

Response samples

Content type
[
  • {
    }
]

Find jobs based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
jobIds
Array of strings or null [ 1 .. 500 ] items

Filter to jobs whose ids are in the list

numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter jobs to only given numbers

jobNames
Array of strings or null [ 1 .. 500 ] items

Filter jobs to only given names

status
string (JobStatusEnum)
Enum: "draft" "needsReview" "approved" "engineering" "scheduled" "inProgress" "complete" "cancelled" "hold"

Job status

statuses
Array of strings or null (JobStatusEnum)
Enum: "draft" "needsReview" "approved" "engineering" "scheduled" "inProgress" "complete" "cancelled" "hold"

Filter jobs to match the given statuses

parentItemId
string or null

Filter jobs based on the id of the parent item they produce

hasIncompleteOperations
boolean or null

Filters jobs to have those that have at least 1 incomplete operation. Note that this will filter out jobs that haven't been approved yet because they technically have no operations on them until approved.

salesOrderId
string or null = 24 characters

Filters for jobs that are for this sales order id. Please reference /api/sales-orders endpoint.

createdBeforeUtc
string or null <date-time>

Filters jobs created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters jobs created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedBeforeUtc
string or null <date-time>

Filters jobs modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedAfterUtc
string or null <date-time>

Filters jobs modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Useful for polling incrementally instead of re-syncing every job.

productionDueDateFrom
string or null <date-time>

Filter to jobs whose production due date falls on or after this date. The whole day is included, so any time component is ignored.

productionDueDateTo
string or null <date-time>

Filter to jobs whose production due date falls on or before this date. The whole day is included, so a job due later that same day still matches.

completedOnFrom
string or null <date-time>

Filter to jobs completed on or after this date, as a whole day in the shop's timezone. Any time component is ignored.

completedOnTo
string or null <date-time>

Filter to jobs completed on or before this date, as a whole day in the shop's timezone, so a job completed later that same shop day still matches.

Responses

Request samples

Content type
{
  • "jobIds": [
    ],
  • "numbers": [
    ],
  • "jobNames": [
    ],
  • "status": "draft",
  • "statuses": [
    ],
  • "parentItemId": "string",
  • "hasIncompleteOperations": true,
  • "salesOrderId": "stringstringstringstring",
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "productionDueDateFrom": "2019-08-24T14:15:22Z",
  • "productionDueDateTo": "2019-08-24T14:15:22Z",
  • "completedOnFrom": "2019-08-24T14:15:22Z",
  • "completedOnTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Update a job status

path Parameters
jobId
required
string = 24 characters
Request Body schema:
required
status
required
string (JobStatusEnum)
Enum: "draft" "needsReview" "approved" "engineering" "scheduled" "inProgress" "complete" "cancelled" "hold"

Job status

createPOs
boolean or null

Create Purchase Orders for the Job. Required for the following statuses: Engineering, Approved

isInitialDataImport
boolean or null

The job will be created as Complete. No inventory transactions. This is should mostly be used when importing jobs from legacy systems. Required for the following statuses: Complete

Responses

Request samples

Content type
{
  • "status": "draft",
  • "createPOs": true,
  • "isInitialDataImport": true
}

Job Custom Fields

Update (selectively) custom fields on a job

path Parameters
jobId
required
string = 24 characters

The job identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a job

path Parameters
jobId
required
string = 24 characters

The job identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Job Full Routing

Deletes a full routing operation in process tracking field for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Lists full routing operation in process tracking field for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to in process tracking fields whose label contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Create a full routing input item for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Response samples

Content type
{
  • "id": "string"
}

Delete a full routing input item from job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Gets a full routing input item for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

Update a full routing input item for a job Lines assigned to an operation are not supported yet: the operation keeps its own copy of the line's quantities, so a change to `valueTypeUnits` or `fixedUnits` is reverted when the routing is next loaded.

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Lists the full routing input items for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

List input materials for a job's routing

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Creates a full routing operation in process tracking field for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
Request Body schema:
required
label
required
string non-empty

Label describing the in process tracking field

description
string or null

The description of the in process tracking field

units
string or null

The units used when this in process tracking field represents a number

fieldTypeId
required
string non-empty

The id of the field type for this in process tracking field

targetValue
number or null <double>

The target or ideal value of an in process tracking field response

minimumValue
number or null <double>

The minimum acceptable value for a tracking field response

maximumValue
number or null <double>

The maximum acceptable value for a tracking field response

triggeringBooleanValue
boolean or null

The target value for booleans. Typically Yes/No for proceeding with next checkpoint

triggeringDropdownValue
string or null

The target value for multiple options

required
boolean

Whether the in process tracking field requires a response

restricted
boolean

If true, only users with the appropriate permission will be allowed to save a response.

firstArticle
boolean

Only applies to the During phase. If true (and Required), this field will prevent adding any completed items to inventory if target is not met.

onFair
boolean

If true, this field's measurements are reported on the First Article Inspection Report (FAIR). Does not affect sampling frequency.

Responses

Request samples

Content type
{
  • "label": "string",
  • "description": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Response samples

Content type
{
  • "id": "string"
}

Get a summary of the make routing for a job

path Parameters
jobId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Creates a full routing operation for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
Request Body schema:
required
systemOperationId
required
string = 24 characters

System Operation Id

order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Operation instructions. Will default to the instructions defined on the operation when not provided.

inputMaterialIds
Array of strings or null non-empty

The ids on the input material to associate to this operation. This value should be the Id from the response from items/{itemId}/routing/input-materials/list

Responses

Request samples

Content type
{
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string",
  • "inputMaterialIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Removes a full routing operation for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Gets a full routing operation for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "isOutsideProcessing": true,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "machineTrackingEnabled": true,
  • "instructions": "string"
}

Updates a full routing operation for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
Request Body schema:
required
order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Instructions for this operation.

Responses

Request samples

Content type
{
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string"
}

Gets a full routing operation item for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

List full routing operation items for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Lists full routing operations for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to operations who's name contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Gets a full routing routing for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "allowContinuousFlow": true
}

Job Part Line Item Full Routing

Gets a full routing operation in process tracking field for a job

path Parameters
jobId
required
string = 24 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "label": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Job Item To Make

Get a specific item to make on a job

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "isCustom": true,
  • "status": "new",
  • "quantityMade": 0.1,
  • "depth": 0,
  • "routingNotes": "string",
  • "costBreakdown": {
    },
  • "costBreakdownEstimated": {
    }
}

Get a list of items to make on a job

path Parameters
jobId
required
string = 24 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
[
  • {
    }
]

Get the cost breakdowns for specific item to make on a job

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "costBreakdown": {
    },
  • "costBreakdownEstimated": {
    }
}

Job Item To Make Operation

Adds additional quantity completed to a job operation without completing the operation. Each call will increment the quantity completed by the specified amount.

This is a non-idempotent action. Multiple calls with the same parameters will result in the quantity being added multiple times. Implement appropriate client-side controls to prevent duplicate submissions.

path Parameters
jobId
required
string

The ID of the job

itemToMakeId
required
string

The ID of the item to make

operationId
required
string

The ID of the operation

Request Body schema:

The request containing the additional quantity to add

additionalQuantity
required
number <double>

The additional quantity to add to the operation's completed quantity. Must be greater than zero.

Responses

Request samples

Content type
{
  • "additionalQuantity": 0.1
}

Response samples

Content type
{
  • "jobId": "string",
  • "itemToMakeId": "string",
  • "operationId": "string",
  • "previousQuantityCompleted": 0.1,
  • "additionalQuantityAdded": 0.1,
  • "newTotalQuantityCompleted": 0.1,
  • "quantityRequired": 0.1,
  • "operationStatus": "string"
}

Completes a job operation, optionally recording a final completed quantity and scrap.

Closes any open timers on the operation, marks setup and run complete, readies downstream operations, and — when this is the item's final operation, or a split operation that produces finished goods — receives finished goods into inventory (unless addItemsToInventory is false), completing the item on its final operation and the job once every item is done. Quantity made is added on top of quantity recorded earlier, so a caller that already reported production via add-quantity-completed should pass zero here.

path Parameters
jobId
required
string = 24 characters

The ID of the job

itemToMakeId
required
string = 36 characters

The ID of the item to make

operationId
required
string = 36 characters

The ID of the operation

Request Body schema:

Completion details: final quantity, scrap, and inventory options

quantityMade
number <double> >= 0

Additional quantity completed as part of this completion, added on top of any quantity already recorded on the operation. May be zero when all quantity was recorded earlier (for example via add-quantity-completed).

quantityScrapped
number <double> >= 0

Quantity scrapped on this operation.

scrapReasonId
string or null

Id of the scrap reason to record with the scrapped quantity. Optional.

locationId
string or null

Id of the inventory location to receive finished goods into when this completion finishes the item (last operation). Optional; when omitted the shop's default location is used.

lotNumber
string or null

Lot number for finished goods when the item is lot tracked. Required when this completion finishes a lot-tracked item and inventory will be created; when omitted in that case for a completion that adds quantity, a lot number is generated.

expirationDate
string or null <date-time>

Expiration date for the finished-goods lot. Optional.

addItemsToInventory
boolean

Whether finished goods are added to inventory when this completion finishes the item. Defaults to true.

Responses

Request samples

Content type
{
  • "quantityMade": 0.1,
  • "quantityScrapped": 0.1,
  • "scrapReasonId": "string",
  • "locationId": "string",
  • "lotNumber": "string",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "addItemsToInventory": true
}

Response samples

Content type
{
  • "jobId": "string",
  • "itemToMakeId": "string",
  • "operationId": "string",
  • "quantityMadeThisCompletion": 0.1,
  • "totalQuantityCompleted": 0.1,
  • "quantityScrapped": 0.1,
  • "operationStatus": "string",
  • "inventoryUpdated": true,
  • "createdInventoryTransactionId": "string"
}

Get a specific operation for an item to make on a job

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "status": "pending",
  • "order": 0,
  • "systemOperationId": "stringstringstringstring",
  • "isOutsideProcessing": true,
  • "originalScheduledStartUtc": "2019-08-24T14:15:22Z",
  • "originalScheduledEndUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "completedById": "string",
  • "scheduledEquipmentId": "string",
  • "scheduledEquipmentName": "string",
  • "customFields": {
    },
  • "instructions": "string",
  • "name": "string",
  • "leadTimeInDays": 0,
  • "associatedPurchaseOrderIds": [
    ],
  • "estimatedSetupTimeInSeconds": 0.1,
  • "estimatedSetupTimeBasis": "fixed",
  • "estimatedRunTimeInSeconds": 0.1,
  • "estimatedRunTimeBasis": "fixed",
  • "estimatedMachineTimeInSeconds": 0.1,
  • "estimatedMachineTimeBasis": "fixed",
  • "estimatedLaborTimeInSeconds": 0.1,
  • "estimatedLaborTimeBasis": "fixed",
  • "isMachineTimeOnly": true,
  • "workOrderId": "stringstringstringstring",
  • "quantityToMake": 0.1,
  • "quantityCompleted": 0.1,
  • "quantityMade": 0.1,
  • "excludeSetupTimeFromAudit": true,
  • "excludeLaborTimeFromAudit": true,
  • "excludeMachineTimeFromAudit": true
}

Get a specific operation for an item to make on a job

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
operationId
required
string = 36 characters
Request Body schema:
object or null

The custom fields to update on the operation object

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Get a list of operations for an item to make on a job

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get a list of required items for an operation on a job item to make

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get a list of required materials for an operation on a job item to make

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Pick a specific item for a specific item to make on a job.

path Parameters
jobId
required
string = 24 characters
itemToMakeId
required
string = 36 characters
operationId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The identifier of the item to be picked. Please reference api/items endpoint

quantity
required
number <double>

Quantity of the item to pick.

locationId
string or null

ID of the location to pick from. If not set or set to an empty string, will pick from inventory not assigned to a location. Cannot be set if FulcrumProduct.PublicApi.Dto.Job.ItemToMake.OperationPickInventoryDto.UseDefaultLocation is set to true.

useDefaultLocation
boolean

If set to true, inventory will be picked from the default location for the item. If set to true, FulcrumProduct.PublicApi.Dto.Job.ItemToMake.OperationPickInventoryDto.LocationId cannot be set. If the item does not have a default location set and this is set to true, will pick from inventory not assigned to a location.

lotId
string or null

The ID of the lot to pick from.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "locationId": "string",
  • "useDefaultLocation": true,
  • "lotId": "string"
}

Job Message

Post a chat message on a job. Omit itemToMakeId and operationId to post on the job-level chat; supply both to post on one operation's chat. The message appears in the in-app job chat, and each mentioned user is subscribed to that chat.

path Parameters
jobId
required
string = 24 characters

The job

Request Body schema:
required

The message to post

body
required
string [ 1 .. 2000 ] characters

Message text

itemToMakeId
string or null = 36 characters

Id of the item-to-make to post on. Must be supplied together with operationId; omit both to post on the job itself.

operationId
string or null = 36 characters

Id of the operation to post on. Must be supplied together with itemToMakeId; omit both to post on the job itself.

mentions
Array of strings or null

User Ids to @mention in the message. Please reference /api/users endpoints.

Responses

Request samples

Content type
{
  • "body": "string",
  • "itemToMakeId": "stringstringstringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "mentions": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

List the chat messages on a job, newest first. Omit the body (or both ids) for the job-level chat; supply itemToMakeId and operationId together for one operation's chat.

path Parameters
jobId
required
string = 24 characters

The job

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

Which chat on the job to list

itemToMakeId
string or null = 36 characters

Id of the item-to-make whose operation chat to list. Must be supplied together with operationId.

operationId
string or null = 36 characters

Id of the operation whose chat to list. Must be supplied together with itemToMakeId.

Responses

Request samples

Content type
{
  • "itemToMakeId": "stringstringstringstringstringstring",
  • "operationId": "stringstringstringstringstringstring"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Job Operation

Get a list of operations for a job

path Parameters
jobId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Job Tracking Timers

Finds job tracking timers based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

The search parameters

userId
string or null

Filter timers based on who started it

jobId
string or null

Filter timers based on job

itemId
string or null = 24 characters

Filter to timers tracked against a job item-to-make that makes this item. Work-order timers never match.

runningTimersOnly
boolean or null

Filter to only running timers

types
Array of strings or null (DomainTimeTrackingTimer_Type) non-empty
Enum: "setup" "run" "clockIn" "break" "labor" "machine"

Filter to specific timer types

createdBeforeUtc
string or null <date-time>

Filters timers created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters timers created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedBeforeUtc
string or null <date-time>

Filters timers modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedAfterUtc
string or null <date-time>

Filters timers modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

startedBeforeUtc
string or null <date-time>

Filters timers started before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

startedAfterUtc
string or null <date-time>

Filters timers started after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedBeforeUtc
string or null <date-time>

Filters timers stopped before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedAfterUtc
string or null <date-time>

Filters timers stopped after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedBeforeUtcOriginal
string or null <date-time>

Filters timers stopped before (exclusive) this parameter in UTC time. This explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting. If no time component is passed, midnight UTC will be used.

stoppedAfterUtcOriginal
string or null <date-time>

Filters timers stopped after (exclusive) this parameter in UTC time. This explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting. If no time component is passed, midnight UTC will be used.

Responses

Request samples

Content type
{
  • "userId": "string",
  • "jobId": "string",
  • "itemId": "stringstringstringstring",
  • "runningTimersOnly": true,
  • "types": [
    ],
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "startedBeforeUtc": "2019-08-24T14:15:22Z",
  • "startedAfterUtc": "2019-08-24T14:15:22Z",
  • "stoppedBeforeUtc": "2019-08-24T14:15:22Z",
  • "stoppedAfterUtc": "2019-08-24T14:15:22Z",
  • "stoppedBeforeUtcOriginal": "2019-08-24T14:15:22Z",
  • "stoppedAfterUtcOriginal": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Starts a job tracking timer. When the operation is grouped under a work order, the work order operation's timer is started instead; it covers every job operation grouped under it.

Request Body schema:
userId
string or null = 24 characters

The user identifier to associate the timer to. If not supplied, will use the user assigned to the api key used for authorization

jobId
required
string non-empty

The job identifier

itemToMakeId
required
string = 36 characters

The item to make identifier

operationId
required
string = 36 characters

The operation identifier. When the operation is grouped under a work order, the work order operation's timer is started instead and covers every job operation grouped under it

type
required
string (DomainTimeTrackingTimer_Type)
Enum: "setup" "run" "clockIn" "break" "labor" "machine"

Responses

Request samples

Content type
{
  • "userId": "stringstringstringstring",
  • "jobId": "string",
  • "itemToMakeId": "stringstringstringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "type": "setup"
}

Stops a job tracking timer. Stopping a work order timer, or one of the job operation timers it holds, stops the whole work order timer.

Request Body schema:
userId
string or null = 24 characters

The user identifier to associate the timer to. If not supplied, will use the user assigned to the api key used for authorization

timerId
required
string = 24 characters

The timer identifier. A work order timer, or a job operation timer held by one, stops the whole work order timer

Responses

Request samples

Content type
{
  • "userId": "stringstringstringstring",
  • "timerId": "stringstringstringstring"
}

Location

Delete a specific location

path Parameters
locationId
required
string = 24 characters

Responses

Get a location.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "barcode": "string"
}

Find locations based on search parameters. Only the locations the caller may see are returned.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter locations based on their name.

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Material

Activate materials based on ids

Request Body schema:
required
materialIds
required
Array of strings non-empty

Material ids to activate.

unit
string (FulcrumProductMaterialsFulcrumLengthUnits)
Enum: "inch" "foot" "yard" "millimeter" "centimeter" "meter"

Responses

Request samples

Content type
{
  • "materialIds": [
    ],
  • "unit": "inch"
}

Response samples

Content type
[
  • {
    }
]

Get a material. DEPRECATED: use POST /v2/materials/get instead, which accepts the material id in the request body. This endpoint fails for material ids that contain '/' characters (e.g. "SS-301-CR 1/2 HD") because ASP.NET Core routing cannot match URL-encoded forward slashes in path segments. Deprecated

path Parameters
id
required
string non-empty

Responses

Response samples

Content type
{
  • "id": "string",
  • "active": true,
  • "name": "string",
  • "form": "sheet",
  • "materialReferenceId": "string",
  • "materialReferenceName": "string",
  • "specification": "string",
  • "subSpecification": "string",
  • "finish": "string",
  • "grade": "string",
  • "dimension": "string",
  • "type": "string",
  • "version": "string",
  • "dimensionUnits": "string",
  • "shapeType": "string",
  • "linearDensity": 0.1,
  • "planarDensity": 0.1,
  • "densityUnits": "string",
  • "vendors": [
    ]
}

Get a material by id. Use this endpoint instead of the path-based v1 when your material ids may contain '/' characters, which ASP.NET Core routing cannot match once URL-encoded.

Request Body schema:
required
id
required
string non-empty

Unique id of the material to retrieve.

Responses

Request samples

Content type
{
  • "id": "string"
}

Response samples

Content type
{
  • "id": "string",
  • "active": true,
  • "name": "string",
  • "form": "sheet",
  • "materialReferenceId": "string",
  • "materialReferenceName": "string",
  • "specification": "string",
  • "subSpecification": "string",
  • "finish": "string",
  • "grade": "string",
  • "dimension": "string",
  • "type": "string",
  • "version": "string",
  • "dimensionUnits": "string",
  • "shapeType": "string",
  • "linearDensity": 0.1,
  • "planarDensity": 0.1,
  • "densityUnits": "string",
  • "vendors": [
    ]
}

Find materials based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null non-empty

Filter materials based on matching ids.

materials
Array of strings or null

Material names.

grades
Array of strings or null

Grades.

forms
Array of strings or null (CommonEnumMaterialFormEnum)
Enum: "sheet" "plate" "roundBar" "flatBar" "channel" "squareTube" "angle" "treadPlate" "hexBar" "squareBar" "teeBar" "hBeam" "rectTube" "pipe" "wBeam" "sBeam" "roundTube" "rectBar" "wideBar"

Material forms.

displayDimensions
Array of strings or null

A list of dimension display values to include

active
boolean or null

Indicate whether to specifically only pull active materials. If left null, all rows are included.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "materials": [
    ],
  • "grades": [
    ],
  • "forms": [
    ],
  • "displayDimensions": [
    ],
  • "active": true
}

Response samples

Content type
[
  • {
    }
]

Material Vendor

Create a new material vendor. DEPRECATED: use POST /v2/material-vendors instead, which accepts the material id in the request body. This endpoint fails for material ids that contain '/' characters (e.g. "SS-301-CR 1/2 HD") because ASP.NET Core routing cannot match URL-encoded forward slashes in path segments. Deprecated

path Parameters
materialId
required
string
Request Body schema:
required
vendorId
required
string = 24 characters

Vendor id associated to this entity. Please reference /api/vendors endpoint.

priceUnit
required
string (CommonEnumMaterialVendorPriceUnitEnum)
Enum: "kilogram" "pound"

Specifies how a routing input item quantity is measured.

isPrimary
boolean

Signifies if this is the primary vendor for this material.

leadTimeInDays
integer or null <int32> >= 0

Lead time for this vendor.

required
Array of objects (MaterialShapeVendorPriceBreakCreateDto) non-empty

Vendor price breaks

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "priceUnit": "kilogram",
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Create a new material vendor. Use this endpoint instead of the path-based v1 when your material ids may contain '/' characters, which ASP.NET Core routing cannot match once URL-encoded.

Request Body schema:
required
materialId
required
string non-empty

Unique id of the material to create the vendor on.

vendorId
required
string = 24 characters

Vendor id associated to this entity. Please reference /api/vendors endpoint.

priceUnit
required
string (CommonEnumMaterialVendorPriceUnitEnum)
Enum: "kilogram" "pound"

Specifies how a routing input item quantity is measured.

isPrimary
boolean

Signifies if this is the primary vendor for this material.

leadTimeInDays
integer or null <int32> >= 0

Lead time for this vendor.

required
Array of objects (MaterialShapeVendorPriceBreakCreateDto) non-empty

Vendor price breaks

Responses

Request samples

Content type
{
  • "materialId": "string",
  • "vendorId": "stringstringstringstring",
  • "priceUnit": "kilogram",
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Get a list of vendors for a material. DEPRECATED: use POST /v2/material-vendors/list instead, which accepts the material id in the request body. This endpoint fails for material ids that contain '/' characters (e.g. "SS-301-CR 1/2 HD") because ASP.NET Core routing cannot match URL-encoded forward slashes in path segments. Deprecated

path Parameters
materialId
required
string

Responses

Response samples

Content type
[
  • {
    }
]

List the vendors for a material. Use this endpoint instead of the path-based v1 when your material ids may contain '/' characters, which ASP.NET Core routing cannot match once URL-encoded.

Request Body schema:
required
materialId
required
string non-empty

Unique id of the material to list vendors for.

Responses

Request samples

Content type
{
  • "materialId": "string"
}

Response samples

Content type
[
  • {
    }
]

Update a specific material vendor. DEPRECATED: use PUT /v2/material-vendors/{vendorId} instead, which accepts the material id in the request body. This endpoint fails for material ids that contain '/' characters (e.g. "SS-301-CR 1/2 HD") because ASP.NET Core routing cannot match URL-encoded forward slashes in path segments. Deprecated

path Parameters
materialId
required
string

The id of the item to modify vendors for

vendorId
required
string = 24 characters

The id of the actual vendor.

Request Body schema:
required

The new data to apply to the given vendor detail

isPrimary
boolean

Signifies if this is the primary vendor for this material.

leadTimeInDays
integer or null <int32> >= 0

Lead time for this vendor.

required
Array of objects (MaterialShapeVendorPriceBreakCreateDto) non-empty

Vendor price breaks

Responses

Request samples

Content type
{
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "vendorId": "stringstringstringstring",
  • "isPrimary": true,
  • "currencyCode": "string",
  • "priceUnit": "kilogram",
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Update a specific material vendor. Use this endpoint instead of the path-based v1 when your material ids may contain '/' characters, which ASP.NET Core routing cannot match once URL-encoded.

path Parameters
vendorId
required
string = 24 characters

Unique id of the vendor to update on the material.

Request Body schema:
required

The new data to apply to the given vendor detail, including the material id

materialId
required
string non-empty

Unique id of the material whose vendor will be updated.

isPrimary
boolean

Signifies if this is the primary vendor for this material.

leadTimeInDays
integer or null <int32> >= 0

Lead time for this vendor.

required
Array of objects (MaterialShapeVendorPriceBreakCreateDto) non-empty

Vendor price breaks

Responses

Request samples

Content type
{
  • "materialId": "string",
  • "isPrimary": true,
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "vendorId": "stringstringstringstring",
  • "isPrimary": true,
  • "currencyCode": "string",
  • "priceUnit": "kilogram",
  • "leadTimeInDays": 0,
  • "priceBreaks": [
    ]
}

Material Code

Get a material code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find material codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

NCRs

Open a new NCR in status New. An affected job and/or item become the NCR's single impact; the job's customer and sales order are recorded from the job itself. The NCR number is assigned by the server. Creates are not idempotent: a retried request opens a second NCR.

Request Body schema:
required
title
string or null [ 0 .. 500 ] characters

Short title for the NCR

type
required
string [ 1 .. 200 ] characters

The NCR type, one of the shop's configured NCR types (for example Quality, Quantity, Customer Complaint, Return, Warranty)

detail
required
string [ 1 .. 2000 ] characters

What was found: the required description of the non-conformance

cause
string or null [ 0 .. 200 ] characters

The cause, one of the shop's configured NCR causes

reason
string or null [ 0 .. 200 ] characters

The reason, one of the shop's configured NCR reasons

disposition
string or null [ 0 .. 100 ] characters

Disposition, when already decided. One of: Acceptable - Customer, Acceptable - Engineer, Conforming, Hold, Return To Customer, Return To Vendor, Return To Fulcrum, Rework, Remake/Replace, Scrap - Customer

jobId
string or null = 24 characters

The affected job's id. The job's customer and sales order are recorded on the impact from the job

itemId
string or null = 24 characters

The affected item's id. Defaults to the job's parent item when only a job is given

quantityImpacted
number or null <double> >= 0

How many units are affected. Requires jobId or itemId. Zero or greater

quantityImpactedDisposition
string or null [ 0 .. 50 ] characters

Whether the impacted quantity is All, Partial, or Unknown. Defaults to Partial

Responses

Request samples

Content type
{
  • "title": "string",
  • "type": "string",
  • "detail": "string",
  • "cause": "string",
  • "reason": "string",
  • "disposition": "string",
  • "jobId": "stringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "quantityImpacted": 0.1,
  • "quantityImpactedDisposition": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "type": "string",
  • "cause": "string",
  • "detail": "string",
  • "departmentId": "stringstringstringstring",
  • "department": {
    },
  • "vendorId": "stringstringstringstring",
  • "vendor": {
    },
  • "workCenters": "string",
  • "scheduledEquipment": "string",
  • "reason": "string",
  • "operator": {
    },
  • "status": "string",
  • "quantityImpacted": 0.1,
  • "incrementalCost": 0.1,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "jobIds": [
    ],
  • "customFields": {
    },
  • "completedBy": {
    },
  • "analyzedBy": {
    },
  • "impacts": [
    ]
}

Get a specific NCR by id.

path Parameters
ncrId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "type": "string",
  • "cause": "string",
  • "detail": "string",
  • "departmentId": "stringstringstringstring",
  • "department": {
    },
  • "vendorId": "stringstringstringstring",
  • "vendor": {
    },
  • "workCenters": "string",
  • "scheduledEquipment": "string",
  • "reason": "string",
  • "operator": {
    },
  • "status": "string",
  • "quantityImpacted": 0.1,
  • "incrementalCost": 0.1,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "jobIds": [
    ],
  • "customFields": {
    },
  • "completedBy": {
    },
  • "analyzedBy": {
    },
  • "impacts": [
    ]
}

Finds NCRs based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
status
string or null

Filter NCRs by a specific status Accepted Values: Closed, Hold, New, Quality Review, Engineering Review

type
string or null

Filter NCRs by a specific type. Available values are configured per tenant in Quality settings (NCR dropdowns).

cause
string or null

Filter NCRs by a specific cause. Available values are configured per tenant in Quality settings (NCR dropdowns).

reason
string or null

Filter NCRs by a specific reason. Available values are configured per tenant in Quality settings (NCR dropdowns).

createdUtc
string or null <date-time>

Filter NCRs created on or after this instant, time of day included. Combines with FulcrumProduct.PublicApi.Controllers.NCRs.Request.NcrListParameters.CreatedFrom when both are sent.

createdFrom
string or null <date-time>

Filter to NCRs created on or after this date, as a whole day in the shop's timezone. Any time component is ignored.

createdTo
string or null <date-time>

Filter to NCRs created on or before this date, as a whole day in the shop's timezone, so an NCR created later that same shop day still matches.

Responses

Request samples

Content type
{
  • "status": "string",
  • "type": "string",
  • "cause": "string",
  • "reason": "string",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "createdFrom": "2019-08-24T14:15:22Z",
  • "createdTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Nesting

Get the cut list for a set of job operations: each part's quantity, dates, material, and the DXF attachment ids to download. An entry that does not resolve to exactly one operation with a system operation is reported in `skipped` with a reason, not as an error.

Request Body schema:
required

The job operations to cut, each named by its job id and job-operation id.

required
Array of objects (NestingWorkPackageJobOperationParameters) [ 1 .. 500 ] items

The job operations to cut, 1 to 500. The same entry may not appear twice.

Array ([ 1 .. 500 ] items)
jobId
required
string [ 24 .. 36 ] characters

Id of the job the operation belongs to.

jobOperationId
required
string [ 24 .. 36 ] characters

Id of the job operation, as returned by the nestable-jobs list.

itemToMakeId
string or null [ 24 .. 36 ] characters

Id of the job's item-to-make line the operation belongs to. Optional; needed only when the job carries the same job-operation id on more than one item to make, which the manifest reports as ambiguousJobOperation.

Responses

Request samples

Content type
{
  • "jobOperations": [
    ]
}

Response samples

Content type
{
  • "parts": [
    ],
  • "skipped": [
    ]
}

List nestable groups — each a material shape paired with the operation it is cut on, carrying the job operations still waiting to be nested and the work-order operations already created.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

Optional filter. Every field is optional and filters combine with AND.

needNesting
boolean or null

When true, keeps only groups that still have job operations waiting to be nested.

existingNests
boolean or null

When true, keeps only groups that already have a work-order operation.

materialForms
Array of strings or null (NestingEnumNestableMaterialFormEnum)
Enum: "sheet" "plate" "roundBar" "flatBar" "channel" "squareTube" "angle" "treadPlate" "hexBar" "squareBar" "teeBar" "hBeam" "rectTube" "pipe" "wBeam" "sBeam" "roundTube" "rectBar" "wideBar" "reinforcingBar" "halfRoundBar" "halfOvalBar"

Keeps only groups whose material shape has one of these stock forms.

operationIds
Array of strings or null [ 1 .. 500 ] items

Keeps only groups on one of these routing operations.

materialShapeIds
Array of strings or null [ 1 .. 500 ] items

Keeps only groups on one of these material shapes.

earliestStartOnOrBefore
string or null <date-time>

Keeps only groups whose earliest scheduled-start job operation falls on or before this calendar date. Only the calendar date is used, exactly as written; any time or UTC offset is ignored. A group with no dated job operation is dropped as well, which means existing-nest-only groups never survive this filter.

search
string or null

Single search token, matched case-insensitively as a substring against the job name and number, the customer name, the sales order number and name, the item name, the work order name, the material shape name, and the operation name. Not split on whitespace.

Responses

Request samples

Content type
{
  • "needNesting": true,
  • "existingNests": true,
  • "materialForms": [
    ],
  • "operationIds": [
    ],
  • "materialShapeIds": [
    ],
  • "earliestStartOnOrBefore": "2019-08-24T14:15:22Z",
  • "search": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Note

Create a new note on a parent document

Request Body schema:
required
parentId
required
string [ 24 .. 36 ] characters

Unique identifier of the object to which the note is attached Can be 24 or 36 characters, depending on parent type

parentType
required
string (NoteTypeEnum)
Enum: "salesOrder" "purchaseOrder" "quote" "invoice"

Note parent document type

body
required
string [ 1 .. 2000 ] characters

Note text

mentions
Array of strings or null

User Ids to tag in the note. Please reference /api/users endpoints.

Responses

Request samples

Content type
{
  • "parentId": "stringstringstringstring",
  • "parentType": "salesOrder",
  • "body": "string",
  • "mentions": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Get a specific note

path Parameters
noteId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "parentId": "stringstringstringstring",
  • "parentType": "salesOrder",
  • "body": "string",
  • "mentions": [
    ]
}

Find notes based on search parameters.

Request Body schema:
required
parentType
required
string (NoteTypeEnum)
Enum: "salesOrder" "purchaseOrder" "quote" "invoice"

Note parent document type

parentId
required
string [ 24 .. 36 ] characters

Filter notes by parent Id. Either 24 or 36 characters, depending on parent type

Responses

Request samples

Content type
{
  • "parentType": "salesOrder",
  • "parentId": "stringstringstringstring"
}

Response samples

Content type
[
  • {
    }
]

Operation

Create a new operation

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of operation.

description
required
string [ 1 .. 200 ] characters

The description of the operation.

isOutsideProcessing
boolean

Specifies whether this is an outside processing operation.

object (ItemRoutingOperationTime)

Operation time and type

object (ItemRoutingOperationTime)

Operation time and type

object (ItemRoutingOperationTime)

Operation time and type

machineTimeTrackingEnabled
boolean

Specifies whether machine tracking is enabled.

object (ItemRoutingOutsideProcessingOperationCost)

Outside processing operation cost

defaultVendorId
string or null = 24 characters

Default vendor id that will be used for this operation. Please reference /api/vendors endpoint.

vendors
Array of strings or null

Available vendors.

leadDays
integer or null <int32> >= 0

Lead days.

instructions
string or null [ 1 .. 2000 ] characters

Instructions.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "isOutsideProcessing": true,
  • "setupTime": {
    },
  • "laborTime": {
    },
  • "machineTime": {
    },
  • "machineTimeTrackingEnabled": true,
  • "outsideProcessingCost": {
    },
  • "defaultVendorId": "stringstringstringstring",
  • "vendors": [
    ],
  • "leadDays": 0,
  • "instructions": "string",
  • "accountingCodeId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Get an operation.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "setupTime": {
    },
  • "laborTime": {
    },
  • "machineTimeTrackingEnabled": true,
  • "machineTime": {
    },
  • "isOutsideProcessing": true,
  • "outsideProcessingCost": {
    },
  • "unattended": true,
  • "defaultVendorId": "stringstringstringstring",
  • "leadDays": 0,
  • "accountingCodeId": "stringstringstringstring",
  • "workCenters": [
    ],
  • "isNestable": true,
  • "instructions": "string",
  • "rates": {
    }
}

Find operations based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter operations based on their name.

modifiedBeforeUtc
string or null <date-time>

Filters operations modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedAfterUtc
string or null <date-time>

Filters operations modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used. Useful for polling incrementally instead of re-syncing every operation.

Responses

Request samples

Content type
{
  • "name": "string",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Update an operation.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of operation.

description
required
string [ 1 .. 200 ] characters

The description of the operation.

isOutsideProcessing
boolean

Specifies whether this is an outside processing operation.

object (ItemRoutingOperationTime)

Operation time and type

object (ItemRoutingOperationTime)

Operation time and type

object (ItemRoutingOperationTime)

Operation time and type

machineTimeTrackingEnabled
boolean

Specifies whether machine tracking is enabled.

object (ItemRoutingOutsideProcessingOperationCost)

Outside processing operation cost

defaultVendorId
string or null = 24 characters

Default vendor id that will be used for this operation. Please reference /api/vendors endpoint.

vendors
Array of strings or null

Available vendors.

leadDays
integer or null <int32> >= 0

Lead days.

instructions
string or null [ 1 .. 2000 ] characters

Instructions.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "isOutsideProcessing": true,
  • "setupTime": {
    },
  • "laborTime": {
    },
  • "machineTime": {
    },
  • "machineTimeTrackingEnabled": true,
  • "outsideProcessingCost": {
    },
  • "defaultVendorId": "stringstringstringstring",
  • "vendors": [
    ],
  • "leadDays": 0,
  • "instructions": "string",
  • "accountingCodeId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "setupTime": {
    },
  • "laborTime": {
    },
  • "machineTimeTrackingEnabled": true,
  • "machineTime": {
    },
  • "isOutsideProcessing": true,
  • "outsideProcessingCost": {
    },
  • "unattended": true,
  • "defaultVendorId": "stringstringstringstring",
  • "leadDays": 0,
  • "accountingCodeId": "stringstringstringstring",
  • "workCenters": [
    ],
  • "isNestable": true,
  • "instructions": "string",
  • "rates": {
    }
}

Payment Term

Create a new payment term

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

dueDays
required
integer <int32> >= 0

Due days.

Responses

Request samples

Content type
{
  • "name": "string",
  • "dueDays": 0
}

Response samples

Content type
{
  • "id": "string"
}

Get a payment term.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "dueDays": 0,
  • "deleted": true
}

Find payment terms based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter payment terms based on their name.

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Purchase Order

Create a new draft purchase order

Request Body schema:
required
vendorId
required
string = 24 characters

Vendor Id

type
required
string (PurchaseOrderTypeEnum)
Enum: "standard" "outsideProcessing" "vendorCredit"

Purchase order type

contactId
string or null = 36 characters

Vendor Contact Id; defaults to the Id of the first contact belonging to the input vendor

companyInfoId
string or null = 24 characters

Company Information Id; defaults to primary company info Id

currencyCode
string or null

Currency code override; defaults to vendor currency code override, then the company's primary currency code

object or null

External references associated with this entity.

expectedReceiveDate
string or null <date-time>

PO Expected receipt date

Responses

Request samples

Content type
{
  • "vendorId": "stringstringstringstring",
  • "type": "standard",
  • "contactId": "stringstringstringstringstringstring",
  • "companyInfoId": "stringstringstringstring",
  • "currencyCode": "string",
  • "externalReferences": {
    },
  • "expectedReceiveDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "issueDate": "2019-08-24T14:15:22Z",
  • "earliestReceiveDate": "2019-08-24T14:15:22Z",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "vendorId": "stringstringstringstring",
  • "contactId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "type": "standard",
  • "status": "draft",
  • "receivingStatus": "notReceived",
  • "vendorCredit": 0.1,
  • "discount": 0.1,
  • "subTotal": 0.1,
  • "total": 0.1,
  • "companyInfoId": "stringstringstringstring",
  • "vendorNote": "string",
  • "notes": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "deleted": true,
  • "currencyCode": "string",
  • "vendorOrderNumber": "string",
  • "jobReferences": [
    ]
}

Delete a specific purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Get a specific purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "issueDate": "2019-08-24T14:15:22Z",
  • "earliestReceiveDate": "2019-08-24T14:15:22Z",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "vendorId": "stringstringstringstring",
  • "contactId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "type": "standard",
  • "status": "draft",
  • "receivingStatus": "notReceived",
  • "vendorCredit": 0.1,
  • "discount": 0.1,
  • "subTotal": 0.1,
  • "total": 0.1,
  • "companyInfoId": "stringstringstringstring",
  • "vendorNote": "string",
  • "notes": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "deleted": true,
  • "currencyCode": "string",
  • "vendorOrderNumber": "string",
  • "jobReferences": [
    ]
}

Partially update a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "issueDate": "2019-08-24T14:15:22Z",
  • "earliestReceiveDate": "2019-08-24T14:15:22Z",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "vendorId": "stringstringstringstring",
  • "contactId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "type": "standard",
  • "status": "draft",
  • "receivingStatus": "notReceived",
  • "vendorCredit": 0.1,
  • "discount": 0.1,
  • "subTotal": 0.1,
  • "total": 0.1,
  • "companyInfoId": "stringstringstringstring",
  • "vendorNote": "string",
  • "notes": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "deleted": true,
  • "currencyCode": "string",
  • "vendorOrderNumber": "string",
  • "jobReferences": [
    ]
}

Update a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

vendorNote
string or null [ 1 .. 2000 ] characters

The vendor note is a string property that represents a note provided to the vendor.

vendorOrderNumber
string or null

Vendor order number associated to a third party system.

expectedReceiveDate
string or null <date-time>

PO Expected receipt date (UTC)

promiseDate
string or null <date-time>

PO Promise date (UTC).

Responses

Request samples

Content type
{
  • "externalReferences": {
    },
  • "vendorNote": "string",
  • "vendorOrderNumber": "string",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "issueDate": "2019-08-24T14:15:22Z",
  • "earliestReceiveDate": "2019-08-24T14:15:22Z",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "vendorId": "stringstringstringstring",
  • "contactId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "type": "standard",
  • "status": "draft",
  • "receivingStatus": "notReceived",
  • "vendorCredit": 0.1,
  • "discount": 0.1,
  • "subTotal": 0.1,
  • "total": 0.1,
  • "companyInfoId": "stringstringstringstring",
  • "vendorNote": "string",
  • "notes": [
    ],
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "deleted": true,
  • "currencyCode": "string",
  • "vendorOrderNumber": "string",
  • "jobReferences": [
    ]
}

Download the PDF for a purchase order

The document is rendered when you call this, from the order's current state and the tenant's PDFs & Emails settings, so it is the same document the product's Download button produces rather than a stored copy of one sent earlier. The file name derives from the tenant's purchase-order title template with "Purchase Order" abbreviated to "PO" and spaces removed, so the default template yields PO104.pdf for an ordered purchase order and RFQ104.pdf for one still in Draft. The title printed inside the document keeps its spacing; only the file name is squashed. The printed line rows reflect the tenant's line-consolidation setting: with it on, stored part lines that agree on item, unit price after discount, expected receive date and the item's custom unit-of-measure multiplier print as one row carrying their summed quantity, their combined subtotal and each stored line's number, so the document may show fewer rows than the order holds. Outside processing lines consolidate on item, price and expected receive date.

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Find purchase orders based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter purchase orders to only given numbers

status
string (PurchaseOrderStatusEnum)
Enum: "draft" "needsApproval" "approved" "ordered" "paid" "cancelled"

Purchase order status

receivingStatus
string (PurchaseOrderReceivingStatusEnum)
Enum: "notReceived" "partiallyReceived" "received"

Purchase order receipt status

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

includeReceiptData
boolean

If set to true, receipt data will be included in the results

vendorId
string or null = 24 characters

The vendor id.

orderDateFrom
string or null <date-time>

Filter to purchase orders whose order date falls on or after this date. The whole day is included, so any time component is ignored.

orderDateTo
string or null <date-time>

Filter to purchase orders whose order date falls on or before this date. The whole day is included, so a purchase order ordered later that same day still matches.

jobId
string or null = 24 characters

Filter to purchase orders associated with this job — associated with the order itself, allocated to one of its part line items, or carried by an outside-processing line item.

Responses

Request samples

Content type
{
  • "numbers": [
    ],
  • "status": "draft",
  • "receivingStatus": "notReceived",
  • "externalReference": {
    },
  • "includeReceiptData": true,
  • "vendorId": "stringstringstringstring",
  • "orderDateFrom": "2019-08-24T14:15:22Z",
  • "orderDateTo": "2019-08-24T14:15:22Z",
  • "jobId": "stringstringstringstring"
}

Response samples

Content type
[
  • {
    }
]

Update a purchase order status

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema:
required
status
required
string (PurchaseOrderStatusEnum)
Enum: "draft" "needsApproval" "approved" "ordered" "paid" "cancelled"

Purchase order status

paidDate
string or null <date-time>

The date that the purchase order was paid. Should be provided in UTC. Will default to current date/time if not provided when applicable.

Responses

Request samples

Content type
{
  • "status": "draft",
  • "paidDate": "2019-08-24T14:15:22Z"
}

Purchase Order Custom Fields

Update (selectively) custom fields on a purchase order

path Parameters
id
required
string = 24 characters

The purchase order identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a purchase order

path Parameters
id
required
string = 24 characters

The purchase order identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Purchase Order Discount Line Item

Get the discount line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "price": 0.1
}

Purchase Order Fee Line Item

Create a fee line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 1 .. 200 ] characters

Verbose description for this entity.

quantity
number or null <double> >= 0

The line item quantity. Required for receivable line items.

price
required
number <double> >= 0

The line item unit price.

isReceivable
boolean or null

Dictate if this fee is receivable. If not provided, defaults to false.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

unitOfMeasure
string (CommonEnumLineItemUomEnum)
Enum: "notApplicable" "piece" "linearFeet" "hour" "yard"

Line item unit of measure.

isTaxable
boolean or null

Dictate if this fee is taxable. If not provided, defaults to false.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "isReceivable": true,
  • "accountingCodeId": "stringstringstringstring",
  • "unitOfMeasure": "notApplicable",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Delete a fee line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific fee line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "isReceivable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific fee line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "isReceivable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific fee line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 1 .. 200 ] characters

Verbose description for this entity.

quantity
number or null <double> >= 0

The line item quantity. Required for receivable line items.

price
required
number <double> >= 0

The line item price.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

unitOfMeasure
string (CommonEnumLineItemUomEnum)
Enum: "notApplicable" "piece" "linearFeet" "hour" "yard"

Line item unit of measure.

isReceivable
boolean or null

Dictate if this fee is receivable. If not provided, defaults to false.

isTaxable
boolean or null

Dictate if this fee is taxable. If not provided, defaults to false.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "unitOfMeasure": "notApplicable",
  • "isReceivable": true,
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "isReceivable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of fee lines items for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get tax allocations for a specific fee line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "appliedTaxes": [
    ],
  • "totalTax": 0.1
}

Purchase Order Line Item

Get a specific line item for a purchase order of generic type

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "type": "part",
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "taxCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "lineItemId": "string",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of lines items for a purchase order, regardless of type

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get tax allocations for a specific line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "appliedTaxes": [
    ],
  • "totalTax": 0.1
}

Purchase Order Outside Processing Line Item

Create an outside processing line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema:
required
jobId
required
string = 24 characters

Job id associated with this line item.

operationId
required
string = 36 characters

Operation id associated with this line item.

quantity
number or null <double> >= 0

The line item quantity. If not provided, defaults to Job operation QuantityToMake

price
number or null <double> >= 0

The line item unit price. If not provided, defaults to price data stored on Job operation.

expectedReceiveDate
string or null <date-time>

Expected receipt date for this line item.

promiseDate
string or null <date-time>

Promise date (UTC).

Responses

Request samples

Content type
{
  • "jobId": "stringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "string"
}

Delete an outside processing line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific outside processing line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "jobId": "stringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "accountingCodeId": "stringstringstringstring",
  • "description": "string",
  • "receivedStatus": "open",
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "customFields": {
    },
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Partially update a specific outside processing line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "jobId": "stringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "accountingCodeId": "stringstringstringstring",
  • "description": "string",
  • "receivedStatus": "open",
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "customFields": {
    },
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Update a specific outside processing line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
quantity
number or null <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

expectedReceiveDate
string or null <date-time>

Expected receipt date for this line item.

promiseDate
string or null <date-time>

Promise date (UTC).

Responses

Request samples

Content type
{
  • "quantity": 0.1,
  • "price": 0.1,
  • "externalReferences": {
    },
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "jobId": "stringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "accountingCodeId": "stringstringstringstring",
  • "description": "string",
  • "receivedStatus": "open",
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "customFields": {
    },
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Get a list of outside processing lines items for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get tax allocations for a specific outside processing line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "appliedTaxes": [
    ],
  • "totalTax": 0.1
}

Purchase Order Part Line Item

Create a part line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
Request Body schema:
required
itemId
required
string = 24 characters

Item id associated with this line item.

quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item unit price. Defaults to item's vendor price, if not provided.

isTaxExempt
boolean or null

Dictate if this line item is tax exempt. Defaults to item details, if not provided.

expectedReceiveDate
string or null <date-time>

Expected receipt date for this line item.

promiseDate
string or null <date-time>

Promise date (UTC).

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "isTaxExempt": true,
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a part line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific part line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "receivedStatus": "open",
  • "convertedQuantity": 0.1,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFieldData": {
    },
  • "customFields": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "vendorPartNumber": "string",
  • "vendorPartDescription": "string",
  • "vendorNote": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isInventoried": true,
  • "jobIds": [
    ]
}

Partially update a specific part line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "receivedStatus": "open",
  • "convertedQuantity": 0.1,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFieldData": {
    },
  • "customFields": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "vendorPartNumber": "string",
  • "vendorPartDescription": "string",
  • "vendorNote": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isInventoried": true,
  • "jobIds": [
    ]
}

Update a specific part line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
quantity
required
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item unit price. Defaults to item's vendor price, if not provided.

isTaxExempt
boolean or null

Override tax exempt status of the part line item, if present.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

vendorNote
string or null [ 1 .. 2000 ] characters

Notes intended for the vendor for this part line item

expectedReceiveDate
string or null <date-time>

Expected receipt date (UTC)

promiseDate
string or null <date-time>

Promise date (UTC).

Responses

Request samples

Content type
{
  • "quantity": 0.1,
  • "price": 0.1,
  • "isTaxExempt": true,
  • "externalReferences": {
    },
  • "vendorNote": "string",
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "itemId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "receivedStatus": "open",
  • "convertedQuantity": 0.1,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "expectedReceiveDate": "2019-08-24T14:15:22Z",
  • "promiseDate": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFieldData": {
    },
  • "customFields": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "vendorPartNumber": "string",
  • "vendorPartDescription": "string",
  • "vendorNote": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isInventoried": true,
  • "jobIds": [
    ]
}

Get a list of part line items for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Get tax allocations for a specific part line item on a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "appliedTaxes": [
    ],
  • "totalTax": 0.1
}

Purchase Order Tax Line Item

Get a specific tax line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "code": "string",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "price": 0.1,
  • "taxCodeEditable": true,
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of tax lines items for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Purchase Order Vendor Credit Line Item

Get a specific vendor credit line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "vendorCredit": 0.1,
  • "itemId": "stringstringstringstring",
  • "purchaseOrderId": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific vendor credit line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "vendorCredit": 0.1,
  • "itemId": "stringstringstringstring",
  • "purchaseOrderId": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific vendor credit line item for a purchase order

path Parameters
purchaseOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "vendorCredit": 0.1,
  • "itemId": "stringstringstringstring",
  • "purchaseOrderId": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "description": "string",
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of vendor credit line items for a specific purchase order

path Parameters
purchaseOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Quote

Calculate when a quote could be made

Queues a capable-to-promise calculation, which schedules the quote's make lines against the current schedule at high, moderate and low job priority without creating any jobs. The calculation runs in the background; read its result with Get Quote Capable To Promise. A calculation already pending for the quote is not queued again, and the request still answers 202. The body and each of its fields are optional.

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
inventoryFulfillment
boolean

When true, inventory on hand that is not already demanded elsewhere covers part of each line, and only the remainder is scheduled. Defaults to false.

ignoreWarnings
boolean

When true, the calculation runs even when the current schedule is out of date, which makes it take longer. When false, an out-of-date schedule ends the calculation with a warning instead. Defaults to false.

Responses

Request samples

Content type
{
  • "inventoryFulfillment": true,
  • "ignoreWarnings": true
}

Response samples

Content type
{
  • "errorMessage": "string"
}

Get the latest capable-to-promise calculation for a quote

Returns the latest calculation that has started for the quote. A calculation queued with Calculate Quote Capable To Promise is not returned until it starts; until then this returns the previous calculation, so compare createdUtc with the value read before to tell when the new one has replaced it. A quote with no calculation returns notRun. Each run is one job-priority scenario; its estimatedEndUtc is when the whole quote could be made at that priority, and is null when any of its lines has no estimated end.

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "status": "notRun",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "startedUtc": "2019-08-24T14:15:22Z",
  • "endedUtc": "2019-08-24T14:15:22Z",
  • "failureMessage": "string",
  • "warnings": [
    ],
  • "runs": [
    ]
}

Convert a quote to a sales order

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "string"
}

TO BE REMOVED 06/30/2025 - Create a new draft quote Deprecated

Please use provided route instead ==> quotes

Request Body schema:
required
customerId
required
string = 24 characters

The id of the customer to be created

object (CommonAddressCreateDto)

Address with additional context

object (CommonAddressCreateDto)

Address with additional context

object (CustomerContactCreateDto)

A customer contact

object or null

Arbitrary key-value-pair like data that can be used to later on search for the Quote

salesPersonId
string or null = 24 characters

Sales Person identifier. Please reference /api/users endpoint. If not provided, the salesperson defined on the customer will be used.

object (FulcrumProDomainReference)
opportunity
string or null

CRM Opportunity identifier.

notesToCustomer
string or null [ 1 .. 2000 ] characters

A field for the seller to provide additional details or instructions for the customer relating to the order.

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "billingAddress": {
    },
  • "shippingAddress": {
    },
  • "contact": {
    },
  • "externalReferences": {
    },
  • "salesPersonId": "stringstringstringstring",
  • "crmOpportunity": {
    },
  • "opportunity": "string",
  • "notesToCustomer": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Create a new draft quote

Request Body schema:
required
customerId
required
string = 24 characters

The id of the customer to be created

object (CommonAddressCreateDto)

Address with additional context

object (CommonAddressCreateDto)

Address with additional context

object (CustomerContactCreateDto)

A customer contact

object or null

Arbitrary key-value-pair like data that can be used to later on search for the Quote

salesPersonId
string or null = 24 characters

Sales Person identifier. Please reference /api/users endpoint. If not provided, the salesperson defined on the customer will be used.

object (FulcrumProDomainReference)
opportunity
string or null

CRM Opportunity identifier.

notesToCustomer
string or null [ 1 .. 2000 ] characters

A field for the seller to provide additional details or instructions for the customer relating to the order.

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "billingAddress": {
    },
  • "shippingAddress": {
    },
  • "contact": {
    },
  • "externalReferences": {
    },
  • "salesPersonId": "stringstringstringstring",
  • "crmOpportunity": {
    },
  • "opportunity": "string",
  • "notesToCustomer": "string"
}

Response samples

Content type
{
  • "id": "string"
}

TO BE REMOVED 06/30/2025 - Delete a specific Quote Deprecated

Please use provided route instead ==> quotes/{quoteId}

path Parameters
quoteId
required
string = 24 characters

Responses

Delete a specific Quote

path Parameters
quoteId
required
string = 24 characters

Responses

Get a specific Quote

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "customerId": "stringstringstringstring",
  • "quotedDate": "2019-08-24T14:15:22Z",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "status": "open",
  • "externalReferences": {
    },
  • "totalInPrimaryCurrency": 0.1,
  • "currencyInfo": {
    },
  • "customFields": {
    },
  • "opportunity": "string",
  • "salesPersonId": "stringstringstringstring",
  • "billingAddress": {
    },
  • "shippingAddresses": [
    ],
  • "companyId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "notesToCustomer": "string"
}

Partially update a quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "customerId": "stringstringstringstring",
  • "quotedDate": "2019-08-24T14:15:22Z",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "status": "open",
  • "externalReferences": {
    },
  • "totalInPrimaryCurrency": 0.1,
  • "currencyInfo": {
    },
  • "customFields": {
    },
  • "opportunity": "string",
  • "salesPersonId": "stringstringstringstring",
  • "billingAddress": {
    },
  • "shippingAddresses": [
    ],
  • "companyId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "notesToCustomer": "string"
}

Update a quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
object (CommonAddressCreateDto)

Address with additional context

object or null

Arbitrary key-value-pair like data that can be used to later on search for the Quote

dueDate
string or null <date-time>

The date the quote needs to be completed by. Only the calendar date is used, exactly as written; any time or UTC offset is ignored. Omitting the field or sending null on an update leaves the stored due date alone — to clear it, patch /dueDate with null.

opportunity
string or null

CRM Opportunity identifier.

salesPersonId
string or null = 24 characters

Sales Person identifier. Please reference /api/users endpoint.

notesToCustomer
string or null [ 1 .. 2000 ] characters

A field for the seller to provide additional details or instructions for the customer relating to the order.

Responses

Request samples

Content type
{
  • "billingAddress": {
    },
  • "externalReferences": {
    },
  • "dueDate": "2019-08-24T14:15:22Z",
  • "opportunity": "string",
  • "salesPersonId": "stringstringstringstring",
  • "notesToCustomer": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "customerId": "stringstringstringstring",
  • "quotedDate": "2019-08-24T14:15:22Z",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "status": "open",
  • "externalReferences": {
    },
  • "totalInPrimaryCurrency": 0.1,
  • "currencyInfo": {
    },
  • "customFields": {
    },
  • "opportunity": "string",
  • "salesPersonId": "stringstringstringstring",
  • "billingAddress": {
    },
  • "shippingAddresses": [
    ],
  • "companyId": "stringstringstringstring",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "notesToCustomer": "string"
}

Download the PDF for a quote

The document is rendered when you call this, from the quote's current state and the tenant's PDFs & Emails settings, so it is the same document the product's Download button produces rather than a stored copy of one sent earlier. The file name carries the quote's revision letter when it has one.

path Parameters
quoteId
required
string = 24 characters

Responses

Find quotes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter quotes to only given numbers

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

status
string (DtoQuotesStatus)
Enum: "open" "draft" "needsApproval" "approved" "sent" "won" "lost"

Quotes status

modifiedAfterUtc
string or null <date-time>

Filter to quote records modified after the given datetime (in UTC)

quotedDateFrom
string or null <date-time>

Filter to quotes whose quoted date falls on or after this date. The whole day is included, so any time component is ignored.

quotedDateTo
string or null <date-time>

Filter to quotes whose quoted date falls on or before this date. The whole day is included, so a quote quoted later that same day still matches.

Responses

Request samples

Content type
{
  • "numbers": [
    ],
  • "externalReference": {
    },
  • "status": "open",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "quotedDateFrom": "2019-08-24T14:15:22Z",
  • "quotedDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Update a quote status

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
status
required
string (DtoQuoteUpdateQuotesStatus)
Enum: "draft" "needsApproval" "approved" "sent" "won" "lost"

Statuses you can update a quote too

Responses

Request samples

Content type
{
  • "status": "draft"
}

Quote Custom Fields

Update (selectively) custom fields on a quote

path Parameters
id
required
string = 24 characters

The quote identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a quote

path Parameters
id
required
string = 24 characters

The quote identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Quote Discount Line Item

Delete the discount line item for a Quote

path Parameters
quoteId
required
string = 24 characters

Responses

Get the discount line item for a quote

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "number": 0,
  • "accountingDetails": {
    }
}

Update the discount line item for a quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of the discount line.

description
string or null [ 0 .. 2000 ] characters

The description of the discount line.

isPercentage
required
boolean

Indicates whether "Amount" value is percentage based or an absolute amount.

amount
required
number <double> >= 0

The amount of the discount.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "number": 0,
  • "accountingDetails": {
    }
}

Quote Fee Line Item

Create a fee line item on a Quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 0 .. 2000 ] characters

Verbose description for this entity.

quantity
number or null <double> >= 0

The line item quantity

price
required
number <double> >= 0

The line item price.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

unitOfMeasure
string (CommonEnumLineItemUomEnum)
Enum: "notApplicable" "piece" "linearFeet" "hour" "yard"

Line item unit of measure.

isTaxable
boolean or null

Dictate if this fee is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier.

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "unitOfMeasure": "notApplicable",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific fee line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific fee line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "number": 0,
  • "accountingDetails": {
    },
  • "accountingCodeId": "stringstringstringstring"
}

Update a specific fee line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 0 .. 2000 ] characters

Verbose description for this entity.

quantity
number or null <double> >= 0

The line item quantity

price
required
number <double> >= 0

The line item price.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

unitOfMeasure
string (CommonEnumLineItemUomEnum)
Enum: "notApplicable" "piece" "linearFeet" "hour" "yard"

Line item unit of measure.

isTaxable
boolean or null

Dictate if this fee is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "unitOfMeasure": "notApplicable",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "number": 0,
  • "accountingDetails": {
    },
  • "accountingCodeId": "stringstringstringstring"
}

Get a list of fee lines items for a Quote

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Quote Part Line Item

Create a part line item on a Quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
itemId
required
string = 24 characters

Item id associated with this line item.

quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. With pricingScheme set to price, the line takes this price, and keeps its current price when it is omitted (on create, the price the item gives the line). With pricingScheme set to margin, the price is derived from the line's margin and cost, and a non-zero price that differs from the line's current price (on create, any non-zero price) is rejected with a 400. Without pricingScheme, the line is priced under its current scheme: a margin-priced line derives its price from its margin, a line with quantity price breaks takes the price of the break that applies at its quantity, and any other line takes this price, or 0 when it is omitted.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "pricingScheme": "price",
  • "description": "string",
  • "internalNotes": "string",
  • "itemNotes": "string",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "accountingCodeId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Create one or more part line items on a quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
required
Array of objects (QuotePartLineItemCreateDto) non-empty

The line items to add to a sales order.

Array (non-empty)
itemId
required
string = 24 characters

Item id associated with this line item.

quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. With pricingScheme set to price, the line takes this price, and keeps its current price when it is omitted (on create, the price the item gives the line). With pricingScheme set to margin, the price is derived from the line's margin and cost, and a non-zero price that differs from the line's current price (on create, any non-zero price) is rejected with a 400. Without pricingScheme, the line is priced under its current scheme: a margin-priced line derives its price from its margin, a line with quantity price breaks takes the price of the break that applies at its quantity, and any other line takes this price, or 0 when it is omitted.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

Responses

Request samples

Content type
{
  • "lineItems": [
    ]
}

Response samples

Content type
{
  • "ids": [
    ]
}

Delete a specific part line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific part line item for a quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customFields": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "costBreakdown": {
    }
}

Update a specific part line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. With pricingScheme set to price, the line takes this price, and keeps its current price when it is omitted (on create, the price the item gives the line). With pricingScheme set to margin, the price is derived from the line's margin and cost, and a non-zero price that differs from the line's current price (on create, any non-zero price) is rejected with a 400. Without pricingScheme, the line is priced under its current scheme: a margin-priced line derives its price from its margin, a line with quantity price breaks takes the price of the break that applies at its quantity, and any other line takes this price, or 0 when it is omitted.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

Responses

Request samples

Content type
{
  • "quantity": 0.1,
  • "price": 0.1,
  • "pricingScheme": "price",
  • "description": "string",
  • "internalNotes": "string",
  • "itemNotes": "string",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "accountingCodeId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customFields": {
    },
  • "number": 0,
  • "accountingDetails": {
    },
  • "costBreakdown": {
    }
}

Get a list of part lines items for a quote

path Parameters
quoteId
required
string = 24 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
[
  • {
    }
]

Get the cost breakdown for a specific part line item for a quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "type": "estimated",
  • "quantity": 0,
  • "quantityScrapped": 0,
  • "calculatedOn": "2019-08-24T14:15:22Z",
  • "time": {
    },
  • "cumulative": {
    },
  • "cumulativeMaterial": {
    },
  • "cumulativeLabor": {
    },
  • "cumulativeMachine": {
    },
  • "cumulativeOutsideProcessing": {
    },
  • "itemMaterial": {
    },
  • "itemLabor": {
    },
  • "itemMachine": {
    },
  • "itemOutsideProcessing": {
    },
  • "shopRateSetup": {
    },
  • "shopRateRun": {
    },
  • "shopRateMachine": {
    },
  • "componentMaterial": {
    },
  • "componentLabor": {
    },
  • "componentMachine": {
    },
  • "componentOutsideProcessing": {
    },
  • "lines": [
    ]
}

Quote Part Line Item Custom Fields

Update (selectively) custom fields on a line item

path Parameters
quoteId
required
string = 24 characters

The quote identifier that contains the line item

lineItemId
required
string = 36 characters

The line item identifier that contains the custom fields you want to update.

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a line item

path Parameters
quoteId
required
string = 24 characters

The quote identifier that contains the line item

lineItemId
required
string = 36 characters

The line item identifier that contains the custom fields you want to update.

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Quote Part Line Item Full Routing

Create a full routing input item for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Response samples

Content type
{
  • "id": "string"
}

Delete a full routing input item from quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Gets a full routing input item for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

Update a full routing input item for a quote part line item Lines assigned to an operation are not supported yet: the operation keeps its own copy of the line's quantities, so a change to `valueTypeUnits` or `fixedUnits` is reverted when the routing is next loaded.

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Lists the full routing input items for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

List input materials for a quote part line item's routing

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Creates a full routing operations for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
Request Body schema:
required
label
required
string non-empty

Label describing the in process tracking field

description
string or null

The description of the in process tracking field

units
string or null

The units used when this in process tracking field represents a number

fieldTypeId
required
string non-empty

The id of the field type for this in process tracking field

targetValue
number or null <double>

The target or ideal value of an in process tracking field response

minimumValue
number or null <double>

The minimum acceptable value for a tracking field response

maximumValue
number or null <double>

The maximum acceptable value for a tracking field response

triggeringBooleanValue
boolean or null

The target value for booleans. Typically Yes/No for proceeding with next checkpoint

triggeringDropdownValue
string or null

The target value for multiple options

required
boolean

Whether the in process tracking field requires a response

restricted
boolean

If true, only users with the appropriate permission will be allowed to save a response.

firstArticle
boolean

Only applies to the During phase. If true (and Required), this field will prevent adding any completed items to inventory if target is not met.

onFair
boolean

If true, this field's measurements are reported on the First Article Inspection Report (FAIR). Does not affect sampling frequency.

Responses

Request samples

Content type
{
  • "label": "string",
  • "description": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Response samples

Content type
{
  • "id": "string"
}

Deletes a full routing operation in process tracking field for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Gets a full routing operation in process tracking field for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "label": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Lists full routing operation in process tracking fields for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to in process tracking fields whose label contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Get a summary of the make routing for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Creates a full routing operation for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
Request Body schema:
required
systemOperationId
required
string = 24 characters

System Operation Id

order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Operation instructions. Will default to the instructions defined on the operation when not provided.

inputMaterialIds
Array of strings or null non-empty

The ids on the input material to associate to this operation. This value should be the Id from the response from items/{itemId}/routing/input-materials/list

Responses

Request samples

Content type
{
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string",
  • "inputMaterialIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Removes a full routing operation for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Gets a full routing operation for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "isOutsideProcessing": true,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "machineTrackingEnabled": true,
  • "instructions": "string"
}

Updates a full routing operation for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
Request Body schema:
required
order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Instructions for this operation.

Responses

Request samples

Content type
{
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string"
}

Gets a full routing operation item for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

List full routing operation items for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Lists full routing operations for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to operations who's name contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Gets a full routing routing for a quote part line item

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "allowContinuousFlow": true
}

Quote Tax Line Item

Create a tax line item on a Quote

path Parameters
quoteId
required
string = 24 characters
Request Body schema:
required
description
string or null [ 0 .. 2000 ] characters

Verbose description for this entity.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint. If FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxCodeId will be ignored.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxRate will supercede the defined tax rate.

object (DtoCommonAvalaraOptions)

Options for use with Avalara (if enabled).

Responses

Request samples

Content type
{
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific tax line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific tax line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific tax line item for a Quote

path Parameters
quoteId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
description
string or null [ 0 .. 2000 ] characters

Verbose description for this entity.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint. If FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxCodeId will be ignored.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxRate will supercede the defined tax rate.

object (DtoCommonAvalaraOptions)

Options for use with Avalara (if enabled).

Responses

Request samples

Content type
{
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of tax lines items for a Quote

path Parameters
quoteId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Receiving Receipt

Create a receipt for a specific purchase or sales order

Request Body schema:
required
orderType
required
string (CommonEnumOrderType)
Enum: "purchaseOrder" "salesOrder"

Order type enum

orderId
required
string = 24 characters

Id of parent order to which this receipt belongs

required
Array of objects (ReceivingLineItemReceiptLineItemCreateDto) non-empty

Line items

Responses

Request samples

Content type
{
  • "orderType": "purchaseOrder",
  • "orderId": "stringstringstringstring",
  • "lines": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "receivedBy": "string",
  • "number": 0.1,
  • "date": "2019-08-24T14:15:22Z",
  • "dateOriginal": "2019-08-24T14:15:22Z",
  • "dateOverride": "2019-08-24T14:15:22Z",
  • "accountingHeldUtc": "2019-08-24T14:15:22Z",
  • "orderType": "purchaseOrder",
  • "orderId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "lines": [
    ],
  • "customFields": {
    },
  • "invoiceNumber": "string"
}

Get a specific receipt on a purchase or sales order

path Parameters
receiptId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "receivedBy": "string",
  • "number": 0.1,
  • "date": "2019-08-24T14:15:22Z",
  • "dateOriginal": "2019-08-24T14:15:22Z",
  • "dateOverride": "2019-08-24T14:15:22Z",
  • "accountingHeldUtc": "2019-08-24T14:15:22Z",
  • "orderType": "purchaseOrder",
  • "orderId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "lines": [
    ],
  • "customFields": {
    },
  • "invoiceNumber": "string"
}

Partially update a specific receipt for a purchase or sales order

path Parameters
receiptId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "receivedBy": "string",
  • "number": 0.1,
  • "date": "2019-08-24T14:15:22Z",
  • "dateOriginal": "2019-08-24T14:15:22Z",
  • "dateOverride": "2019-08-24T14:15:22Z",
  • "accountingHeldUtc": "2019-08-24T14:15:22Z",
  • "orderType": "purchaseOrder",
  • "orderId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "lines": [
    ],
  • "customFields": {
    },
  • "invoiceNumber": "string"
}

Update a specific receipt for a purchase or sales order

path Parameters
receiptId
required
string = 36 characters
Request Body schema:
required
receivedBy
required
string = 24 characters

Id of the user who received the item(s)

date
string or null <date-time>

Received date override. If not provided, receipt date will default to the date the object was initially created.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this receipt object.

Responses

Request samples

Content type
{
  • "receivedBy": "stringstringstringstring",
  • "date": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "receivedBy": "string",
  • "number": 0.1,
  • "date": "2019-08-24T14:15:22Z",
  • "dateOriginal": "2019-08-24T14:15:22Z",
  • "dateOverride": "2019-08-24T14:15:22Z",
  • "accountingHeldUtc": "2019-08-24T14:15:22Z",
  • "orderType": "purchaseOrder",
  • "orderId": "stringstringstringstring",
  • "externalReferences": {
    },
  • "lines": [
    ],
  • "customFields": {
    },
  • "invoiceNumber": "string"
}

Get a list of receipts for purchase and sales orders

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
salesOrderIds
Array of strings or null

Include receipts for specific sales order ids

purchaseOrderIds
Array of strings or null

Include receipts for specific purchase order ids

receiptIds
Array of strings or null

Include receipts with specific ids

includeReceiptLines
boolean

If set to true, receipt line items will be included in the results

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

receivedDateFrom
string or null <date-time>

Inclusive lower bound on the receipt's effective received date, which is its received-date override when one is set and its recorded received date otherwise. A whole day in the shop's timezone; any time of day supplied is ignored.

receivedDateTo
string or null <date-time>

Inclusive upper bound on that same effective received date. A whole day in the shop's timezone; any time of day supplied is ignored.

Responses

Request samples

Content type
{
  • "salesOrderIds": [
    ],
  • "purchaseOrderIds": [
    ],
  • "receiptIds": [
    ],
  • "includeReceiptLines": true,
  • "externalReference": {
    },
  • "receivedDateFrom": "2019-08-24T14:15:22Z",
  • "receivedDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Receiving Receipt Line Item

Get a specific line item for a receipt on a purchase or sales order

path Parameters
receiptId
required
string = 36 characters

The receiving id

lineId
required
string [ 24 .. 36 ] characters

This will match on the line item id (from the purchase order or sales order) or the line id of the specific receiving

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "fullyReceived": true,
  • "rolledBack": true,
  • "quantityReceived": 0.1,
  • "unitOfMeasureMultiplier": 0.1,
  • "convertedQuantityReceived": 0.1,
  • "externalReferences": {
    },
  • "unitPrice": 0.1,
  • "lineItemType": "part",
  • "itemId": "stringstringstringstring",
  • "unitCost": 0.1,
  • "unitTax": 0.1,
  • "landedCost": 0.1
}

Partially update a specific receipt for a purchase or sales order

path Parameters
receiptId
required
string = 36 characters
lineId
required
string [ 24 .. 36 ] characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "fullyReceived": true,
  • "rolledBack": true,
  • "quantityReceived": 0.1,
  • "unitOfMeasureMultiplier": 0.1,
  • "convertedQuantityReceived": 0.1,
  • "externalReferences": {
    },
  • "unitPrice": 0.1,
  • "lineItemType": "part",
  • "itemId": "stringstringstringstring",
  • "unitCost": 0.1,
  • "unitTax": 0.1,
  • "landedCost": 0.1
}

Roll back a specific line item for a receipt on a purchase or sales order

path Parameters
receiptId
required
string = 36 characters

The receiving id

lineId
required
string [ 24 .. 36 ] characters

This will match on the line item id (from the purchase order or sales order) or the line id of the specific receiving

Responses

Update a specific receipt line item for a purchase or sales order receiving

path Parameters
receiptId
required
string = 36 characters
lineId
required
string [ 24 .. 36 ] characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this receipt line item object.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "lineItemId": "stringstringstringstringstringstring",
  • "fullyReceived": true,
  • "rolledBack": true,
  • "quantityReceived": 0.1,
  • "unitOfMeasureMultiplier": 0.1,
  • "convertedQuantityReceived": 0.1,
  • "externalReferences": {
    },
  • "unitPrice": 0.1,
  • "lineItemType": "part",
  • "itemId": "stringstringstringstring",
  • "unitCost": 0.1,
  • "unitTax": 0.1,
  • "landedCost": 0.1
}

List line items for a receipt on a purchase or sales order

path Parameters
receiptId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Refund Reason Code

Get a refund code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find refund reason codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Reporting

Lists report-ready on-hand inventory rows from the inventory reporting view, including per-unit and extended valuation (material/labor/machine/OP), lot and location context, and item categorization so callers do not need to hand-join inventory to lots, items, and their details. Returns exactly one row per (item, lot, location), so summing on-hand quantity or value across the rows does not over-count a lot.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
itemNumber
string or null

Optional exact-match filter on the item number (the user-facing item identifier). Null means no item filter.

locationName
string or null

Optional exact-match filter on the inventory location name. Null means no location filter.

category
string or null

Optional exact-match filter on the item category. Null means no category filter.

Responses

Request samples

Content type
{
  • "itemNumber": "string",
  • "locationName": "string",
  • "category": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready invoice-line rows from the invoice reporting view, including line type, pricing, tax, and aging detail joined to sales-order and shipment context so callers do not need to hand-join invoices to invoice line items, sales orders, and shipments.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
issuedDateFrom
string or null <date-time>

Inclusive lower bound applied to the invoice's Issued Date. Null means no lower bound.

issuedDateTo
string or null <date-time>

Inclusive upper bound applied to the invoice's Issued Date (the whole to day is included). Null means no upper bound.

invoiceStatus
string or null

Optional exact-match filter on the invoice lifecycle status (e.g. "Issued", "Paid"). Null means no status filter.

lineType
string or null

Optional exact-match filter on the line type (Part, Shipping, Fee, Deposit, Discount, Refund, Tax, or NA). Null means no line-type filter.

Responses

Request samples

Content type
{
  • "issuedDateFrom": "2019-08-24T14:15:22Z",
  • "issuedDateTo": "2019-08-24T14:15:22Z",
  • "invoiceStatus": "string",
  • "lineType": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready per-operator operation rows from the job-activity-by-operator reporting view, including setup/labor/machine time and cost, run-by-run quantities, rates, and job/routing context so callers do not need to hand-join jobs to items-to-make, operations, timers, and job logs.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
startedOrCreatedDateFrom
string or null <date-time>

Inclusive lower bound applied to the run's Started or Created Date. Null means no lower bound.

startedOrCreatedDateTo
string or null <date-time>

Inclusive upper bound applied to the run's Started or Created Date (the whole to day is included). Null means no upper bound.

employee
string or null

Optional exact-match filter on the operator / employee name. Null means no operator filter.

department
string or null

Optional exact-match filter on the department containing the operation's work center. Null means no department filter.

Responses

Request samples

Content type
{
  • "startedOrCreatedDateFrom": "2019-08-24T14:15:22Z",
  • "startedOrCreatedDateTo": "2019-08-24T14:15:22Z",
  • "employee": "string",
  • "department": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready job-operation rows from the job-activity reporting view, including schedule, timer, completion-progress, and routing context so callers do not need to hand-join jobs to items-to-make, operations, timers, and scheduling data.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
operationStatus
string or null

Optional exact-match filter on the operation lifecycle status (e.g. "Running", "Complete"). Null means no operation-status filter.

jobStatus
string or null

Optional exact-match filter on the job lifecycle status (e.g. "In Progress", "Complete"). Null means no job-status filter.

department
string or null

Optional exact-match filter on the department containing the operation's scheduled work center. Null means no department filter.

productionDueDateFrom
string or null <date-time>

Inclusive lower bound applied to the job's Production Due Date. Null means no lower bound.

productionDueDateTo
string or null <date-time>

Inclusive upper bound applied to the job's Production Due Date (the whole to day is included). Null means no upper bound.

Responses

Request samples

Content type
{
  • "operationStatus": "string",
  • "jobStatus": "string",
  • "department": "string",
  • "productionDueDateFrom": "2019-08-24T14:15:22Z",
  • "productionDueDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready material and item requirement rows for scheduled job operations from the material-requirements reporting view, with resolved required quantities, so callers do not need to fan out per job to routings, items-to-make, operations, and per-operation requirement lookups.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
jobStatus
string or null

Optional exact-match filter on the job lifecycle status (e.g. "Scheduled", "In Progress"). Null means no job-status filter.

operationName
string or null

Optional exact-match filter on the operation name (e.g. "Turret Laser"). Null means no operation-name filter.

operationStatus
string or null

Optional exact-match filter on the operation lifecycle status (e.g. "Ready", "Running"). Null means no operation-status filter.

requirementType
string or null

Optional exact-match filter on the requirement type: "Item" or "Material". Null returns both.

productionDueDateFrom
string or null <date-time>

Inclusive lower bound applied to the job's Production Due Date. Null means no lower bound.

productionDueDateTo
string or null <date-time>

Inclusive upper bound applied to the job's Production Due Date (the whole to day is included). Null means no upper bound.

Responses

Request samples

Content type
{
  • "jobStatus": "string",
  • "operationName": "string",
  • "operationStatus": "string",
  • "requirementType": "string",
  • "productionDueDateFrom": "2019-08-24T14:15:22Z",
  • "productionDueDateTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready quote rows from the quote reporting view, including totals, cost, status, and lifecycle dates, so callers do not need to hand-assemble quote-level summary data.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
quotedDateFrom
string or null <date-time>

Inclusive lower bound applied to the quote's Quoted Date. Null means no lower bound.

quotedDateTo
string or null <date-time>

Inclusive upper bound applied to the quote's Quoted Date (the whole to day is included). Null means no upper bound.

status
string or null

Optional exact-match filter on the quote lifecycle status. Null means no status filter.

customerName
string or null

Optional exact-match filter on the customer name. Null means no customer filter.

Responses

Request samples

Content type
{
  • "quotedDateFrom": "2019-08-24T14:15:22Z",
  • "quotedDateTo": "2019-08-24T14:15:22Z",
  • "status": "string",
  • "customerName": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready sales-order line rows from the sales-order line-items reporting view, including pre-computed cost, invoice, ship, and return columns so callers do not need to hand-join sales orders to line items, jobs, invoices, shipments, and returns.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
orderedDateFrom
string or null <date-time>

Inclusive lower bound applied to the order's Ordered Date. Null means no lower bound.

orderedDateTo
string or null <date-time>

Inclusive upper bound applied to the order's Ordered Date (the whole to day is included). Null means no upper bound.

deliveryDueDateFrom
string or null <date-time>

Inclusive lower bound applied to the line's Delivery Due Date. Null means no lower bound.

deliveryDueDateTo
string or null <date-time>

Inclusive upper bound applied to the line's Delivery Due Date (the whole to day is included). Null means no upper bound.

shippedDateFrom
string or null <date-time>

Inclusive lower bound applied to the line's shipping activity. A line matches when any of its shipments could fall on or after this date, so a line whose shipping spans the bound is kept rather than dropped. Lines with nothing shipped yet never match. Null means no lower bound.

shippedDateTo
string or null <date-time>

Inclusive upper bound applied to the line's shipping activity (the whole to day is included). Null means no upper bound.

invoicedDateFrom
string or null <date-time>

Inclusive lower bound applied to the line's invoicing activity, matched the same spans-the-bound way as the shipped-date bounds. Lines with no issued invoice never match. Null means no lower bound.

invoicedDateTo
string or null <date-time>

Inclusive upper bound applied to the line's invoicing activity (the whole to day is included). Null means no upper bound.

salesOrderNumbers
Array of integers <int32> <= 500 items [ items <int32 > ]

Restricts results to the given sales-order numbers, matched exactly. At most 500 may be supplied; an empty or omitted list applies no filter. Duplicates are ignored.

salesOrderStatus
string or null

Optional exact-match filter on the sales-order lifecycle status, as the rows carry it: one of Draft, Needs Approval, Approved, In Progress, Complete, compared ignoring case. Any other value is rejected with a 400 that lists the accepted values. Null means no status filter.

customerName
string or null

Optional exact-match filter on the customer name. Null means no customer filter.

accountingCode
string or null

Optional exact-match filter on the accounting code mapped to the line. Null means no accounting code filter.

unshippedOnly
boolean or null

When true, returns only lines with quantity remaining to ship (Quantity to Ship > 0). When false or null, no ship-status filter is applied.

modifiedAfterUtc
string or null <date-time>

Returns only lines whose parent sales order was saved strictly after this UTC instant. The comparison is exclusive and uses the full date and time rather than the calendar day, so handing back the largest sales order modified value seen on a previous pull returns exactly what changed since it — unlike the ordered, delivery-due, shipped, and invoiced bounds above, which are day-inclusive. The stamp belongs to the order, not the line: any save of the order moves it and returns every one of that order's lines, and that includes the shipping, invoicing, and refund rollups written onto its lines. Changes that never save the order do not move it — job status and cost changes, shipment header edits such as a shipped-date override, and edits to reference data a row merely displays, such as a customer or item name. Null means no modified bound.

Responses

Request samples

Content type
{
  • "orderedDateFrom": "2019-08-24T14:15:22Z",
  • "orderedDateTo": "2019-08-24T14:15:22Z",
  • "deliveryDueDateFrom": "2019-08-24T14:15:22Z",
  • "deliveryDueDateTo": "2019-08-24T14:15:22Z",
  • "shippedDateFrom": "2019-08-24T14:15:22Z",
  • "shippedDateTo": "2019-08-24T14:15:22Z",
  • "invoicedDateFrom": "2019-08-24T14:15:22Z",
  • "invoicedDateTo": "2019-08-24T14:15:22Z",
  • "salesOrderNumbers": [
    ],
  • "salesOrderStatus": "string",
  • "customerName": "string",
  • "accountingCode": "string",
  • "unshippedOnly": true,
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready shipment line rows from the shipping reporting view, including pre-computed dollar columns ($ shipped, $ unshipped, total $ ordered, unit price) so callers do not need to hand-join shipments to sales-order line items.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
shipByDateFrom
string or null <date-time>

Inclusive lower bound applied to the shipment's Ship By Date. Null means no lower bound.

shipByDateTo
string or null <date-time>

Inclusive upper bound applied to the shipment's Ship By Date (the whole to day is included). Null means no upper bound.

shippedDateFrom
string or null <date-time>

Inclusive lower bound applied to the date the shipment actually shipped — its ship-date override when one is set, else its recorded ship date. Distinct from FulcrumProduct.PublicApi.Dto.Reporting.ShippingReportFilter.ShipByDateFrom, which bounds the date it was due to ship rather than the date it did. Matches only shipments whose status is Shipped: a ship-date override can be set while a shipment is still open, so the date alone does not mean it went out. Null means no lower bound.

shippedDateTo
string or null <date-time>

Inclusive upper bound applied to that same actual ship date (the whole to day is included, whatever time of day the shipment went out), and likewise matching only shipments whose status is Shipped. Null means no upper bound.

status
string or null

Optional exact-match filter on the shipment lifecycle status (e.g. "Shipped", "Open"). Null means no status filter.

Responses

Request samples

Content type
{
  • "shipByDateFrom": "2019-08-24T14:15:22Z",
  • "shipByDateTo": "2019-08-24T14:15:22Z",
  • "shippedDateFrom": "2019-08-24T14:15:22Z",
  • "shippedDateTo": "2019-08-24T14:15:22Z",
  • "status": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Lists report-ready time-clock rows from the time-clock reporting view, including clock-in/clock-out times, computed shift hours, reason and clock codes, and override-audit context so callers do not need to hand-join timer entries to their reason and clock-code tags.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
startedFrom
string or null <date-time>

Inclusive lower bound applied to the entry's clock-in time (Started). Null means no lower bound.

startedTo
string or null <date-time>

Inclusive upper bound applied to the entry's clock-in time (Started); the whole to day is included. Null means no upper bound.

stoppedFrom
string or null <date-time>

Inclusive lower bound on the entry's clock-out time (Stopped), as a whole day in UTC rather than the shop's timezone. An entry not yet stopped never matches. Null means no lower bound.

stoppedTo
string or null <date-time>

Inclusive upper bound on the entry's clock-out time (Stopped), as a whole day in UTC rather than the shop's timezone. An entry not yet stopped never matches. Null means no upper bound.

employee
string or null

Optional exact-match filter on the operator / employee name. Null means no employee filter.

type
string or null

Optional exact-match filter on the timer-entry type (ClockIn or Break). Null means no type filter.

Responses

Request samples

Content type
{
  • "startedFrom": "2019-08-24T14:15:22Z",
  • "startedTo": "2019-08-24T14:15:22Z",
  • "stoppedFrom": "2019-08-24T14:15:22Z",
  • "stoppedTo": "2019-08-24T14:15:22Z",
  • "employee": "string",
  • "type": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Sales Order

Create a new draft sales order

Request Body schema:
required
customerId
required
string = 24 characters

The id of the customer to be created

orderedDate
string or null <date-time>

The ordered date of the sales order. For supplied values, only the calendar date is used, exactly as written; any time or UTC offset is ignored. If not supplied, defaults to the current UTC timestamp.

customerPoNumber
string or null [ 1 .. 200 ] characters

Optional customer supplied purchase order number

object (CommonAddressCreateDto)

Address with additional context

object (CommonAddressCreateDto)

Address with additional context

object (CustomerContactCreateDto)

A customer contact

object or null

Arbitrary key-value-pair like data that can be used to later on search for the Sales Order

externalQuoteUrl
string or null

A reference URL that points to an external quote entity.

dueDate
string or null <date-time>

The due date of the sales order. This indicates the expected date of completion. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

paymentTermsId
string or null = 24 characters

Payment terms key identifier. Please reference /api/payment-terms endpoint.

salesPersonId
string or null = 24 characters

Sales Person identifier. Please reference /api/users endpoint. If not provided, the salesperson defined on the customer will be used.

publicNote
string or null [ 1 .. 2000 ] characters

Note to customer. This will appear on PDFs.

priority
string (SalesOrderPriority)
Enum: "low" "moderate" "high"

Priority of the sales order

companyId
string or null = 24 characters

Company identifier. Please reference /api/companies endpoint. If not provided, the primary company will be used (if available).

productionDueDate
string or null <date-time>

The date that the production of items on the sales order needs to be completed by. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

shippingMethodId
string or null = 24 characters

Shipping method identifier. Please reference /api/shipping-methods endpoint.

object (CommonDepositCreateDto)

Deposit creation.

dropship
boolean

Marks the order as dropshipped: fulfilled by shipping directly to the end customer. Defaults to false if omitted.

dropshipCustomerPoNumber
string or null [ 1 .. 200 ] characters

The end customer's purchase order number for a dropshipped order.

Responses

Request samples

Content type
{
  • "customerId": "stringstringstringstring",
  • "orderedDate": "2019-08-24T14:15:22Z",
  • "customerPoNumber": "string",
  • "shippingAddress": {
    },
  • "billingAddress": {
    },
  • "contact": {
    },
  • "externalReferences": {
    },
  • "externalQuoteUrl": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "paymentTermsId": "stringstringstringstring",
  • "salesPersonId": "stringstringstringstring",
  • "publicNote": "string",
  • "priority": "low",
  • "companyId": "stringstringstringstring",
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "shippingMethodId": "stringstringstringstring",
  • "deposit": {
    },
  • "dropship": true,
  • "dropshipCustomerPoNumber": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Get a specific sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "orderedDate": "2019-08-24T14:15:22Z",
  • "customerPoNumber": "string",
  • "externalQuoteUrl": "string",
  • "createdFromQuoteId": "stringstringstringstring",
  • "customerId": "stringstringstringstring",
  • "deliveryDueDate": "2019-08-24T14:15:22Z",
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "sentToProductionDateUtc": "2019-08-24T14:15:22Z",
  • "dropship": true,
  • "dropshipCustomerPoNumber": "string",
  • "billingAddress": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "discount": 0.1,
  • "subtotal": 0.1,
  • "salesPersonId": "stringstringstringstring",
  • "publicNote": "string",
  • "deleted": true,
  • "companyId": "stringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "usesV3Shipping": true,
  • "status": "draft",
  • "priority": "low",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "deposit": {
    },
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "contact": {
    }
}

Partially update an SalesOrder

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "orderedDate": "2019-08-24T14:15:22Z",
  • "customerPoNumber": "string",
  • "externalQuoteUrl": "string",
  • "createdFromQuoteId": "stringstringstringstring",
  • "customerId": "stringstringstringstring",
  • "deliveryDueDate": "2019-08-24T14:15:22Z",
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "sentToProductionDateUtc": "2019-08-24T14:15:22Z",
  • "dropship": true,
  • "dropshipCustomerPoNumber": "string",
  • "billingAddress": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "discount": 0.1,
  • "subtotal": 0.1,
  • "salesPersonId": "stringstringstringstring",
  • "publicNote": "string",
  • "deleted": true,
  • "companyId": "stringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "usesV3Shipping": true,
  • "status": "draft",
  • "priority": "low",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "deposit": {
    },
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "contact": {
    }
}

Update a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

customerPoNumber
string or null [ 1 .. 200 ] characters

CustomerPoNumber

priority
string (SalesOrderPriority)
Enum: "low" "moderate" "high"

Priority of the sales order

deliveryDueDate
string or null <date-time>

The date the SO needs to be delivered to the customer. Note: this does not affect individual line update delivery dates. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

publicNote
string or null [ 1 .. 2000 ] characters

Note to customer. This will appear on PDFs.

dropship
boolean or null

Indicates the order is dropshipped: fulfilled by shipping directly to the end customer. Omit (or send null) to leave both dropship fields untouched.

dropshipCustomerPoNumber
string or null [ 1 .. 200 ] characters

The end customer's purchase order number for a dropshipped order. Written only when FulcrumProduct.PublicApi.Dto.SalesOrder.SalesOrderUpdateDto.Dropship is supplied: send a dropship value with no PO number to clear the stored one. Omitting the dropship flag leaves this field as it is.

Responses

Request samples

Content type
{
  • "externalReferences": {
    },
  • "customerPoNumber": "string",
  • "priority": "low",
  • "deliveryDueDate": "2019-08-24T14:15:22Z",
  • "publicNote": "string",
  • "dropship": true,
  • "dropshipCustomerPoNumber": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "orderedDate": "2019-08-24T14:15:22Z",
  • "customerPoNumber": "string",
  • "externalQuoteUrl": "string",
  • "createdFromQuoteId": "stringstringstringstring",
  • "customerId": "stringstringstringstring",
  • "deliveryDueDate": "2019-08-24T14:15:22Z",
  • "productionDueDate": "2019-08-24T14:15:22Z",
  • "sentToProductionDateUtc": "2019-08-24T14:15:22Z",
  • "dropship": true,
  • "dropshipCustomerPoNumber": "string",
  • "billingAddress": {
    },
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "discount": 0.1,
  • "subtotal": 0.1,
  • "salesPersonId": "stringstringstringstring",
  • "publicNote": "string",
  • "deleted": true,
  • "companyId": "stringstringstringstring",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "usesV3Shipping": true,
  • "status": "draft",
  • "priority": "low",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "deposit": {
    },
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "contact": {
    }
}

Download the PDF for a sales order

The document is rendered when you call this, from the order's current state and the tenant's PDFs & Emails settings, so it is the same document the product's Download button produces rather than a stored copy of one sent earlier.

path Parameters
salesOrderId
required
string = 24 characters

Responses

Find sales orders based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter sales orders to only given numbers

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

status
string (SalesOrderStatus)
Enum: "draft" "needsApproval" "approved" "inProgress" "complete"

Sales order status

externalQuoteUrls
Array of strings or null

Filter sales orders to those matching an external quote URL.

createdFromQuoteId
string or null

Filter sales orders created from the specific quote

customerPoNumber
string or null

Filter sales orders to those whose customer purchase-order number matches this one. Matched case-insensitively against the value as given (trimmed) and against its normalized form, which drops a leading label such as "PO#" or "P.O. Number:" and collapses whitespace — so "PO# 4500123456" finds an order stored as either "PO# 4500123456" or "4500123456". An order whose stored number is longer than 100 characters is never found, and a value with no form of 100 characters or fewer matches no orders, as does a value longer than 1000 characters once trimmed. Whitespace-only is treated as absent, as it is for every string filter.

customerId
string or null

Filter sales orders to those placed by exactly this customer.

createdBeforeUtc
string or null <date-time>

Filters created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedBeforeUtc
string or null <date-time>

Filters modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedAfterUtc
string or null <date-time>

Filters modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

Responses

Request samples

Content type
{
  • "numbers": [
    ],
  • "externalReference": {
    },
  • "status": "draft",
  • "externalQuoteUrls": [
    ],
  • "createdFromQuoteId": "string",
  • "customerPoNumber": "string",
  • "customerId": "string",
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

Update a sales order status

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
status
required
string (SalesOrderStatus)
Enum: "draft" "needsApproval" "approved" "inProgress" "complete"

Sales order status

Responses

Request samples

Content type
{
  • "status": "draft"
}

Sales Order Blanket Line Item

Get a list of blanket lines items for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Partially update a specific blanket line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    },
  • "children": [
    ]
}

Update a specific blanket line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    },
  • "children": [
    ]
}

Get a specific blanket line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    },
  • "children": [
    ]
}

Sales Order Custom Fields

Update (selectively) custom fields on a sales order

path Parameters
id
required
string = 24 characters

The sales order identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a sales order

path Parameters
id
required
string = 24 characters

The sales order identifier

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Sales Order Discount Line Item

Get the discount line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "externalReferences": {
    },
  • "absoluteAmount": 0.1,
  • "number": 0,
  • "accountingDetails": {
    },
  • "price": 0.1
}

Update the discount line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of the discount line.

description
string or null [ 1 .. 200 ] characters

The description of the discount line.

isPercentage
required
boolean

Indicates whether "Amount" value is percentage based or an absolute amount.

amount
required
number <double> >= 0

The amount of the discount.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "isPercentage": true,
  • "amount": 0.1,
  • "externalReferences": {
    },
  • "absoluteAmount": 0.1,
  • "number": 0,
  • "accountingDetails": {
    },
  • "price": 0.1
}

Delete the discount line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Sales Order Fee Line Item

Delete a specific fee line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific fee line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Partially update a specific fee line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Update a specific fee line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 1 .. 200 ] characters

Verbose description for this entity.

quantity
number or null <double> >= 0

The line item quantity

price
required
number <double> >= 0

The line item price.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

isTaxable
boolean or null

Dictate if this fee is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier.

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "unitOfMeasure": "notApplicable",
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Create a fee line item on a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Verbose name for this entity.

description
string or null [ 1 .. 200 ] characters

Verbose description for this entity. If this value is not provided and the name matches a defined "default fee", the description on the "default fee" will be used.

quantity
number or null <double> >= 0

The line item quantity

price
required
number <double> >= 0

The line item price.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint. If this value is not provided and the name matches a defined "default fee", the accounting code on the "default fee" will be used.

isTaxable
boolean or null

Dictate if this fee is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier.

taxRate
number or null <double> >= 0

Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Get a list of fee lines items for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Sales Order Line Item

Get a specific line item for a sales order of generic type

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "lineItemId": "string",
  • "type": "part",
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "name": "string",
  • "description": "string",
  • "quantity": 0.1,
  • "externalReferences": {
    },
  • "accountingCodeId": "stringstringstringstring",
  • "isTaxable": true,
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "customFields": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Get a list of lines items for a sales order, regardless of type

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Sales Order Part Line Item

Create a part line item on a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
itemId
required
string = 24 characters

Item id associated with this line item.

quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. Note, if a price break exists for the item being added (vendor price breaks, item price breaks, etc), this value will be ignored as it is quantity-driven based on the price breaks that do/will exist, unless pricingScheme is price. If this value is not provided and no price breaks exist, the default will be 0. With pricingScheme set to margin, any non-zero price is rejected with a 400.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes (visible in job tracking).

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

Array of objects or null (CommonUrlDto)

A list of links/urls to associated with the line item.

deliveryDate
string or null <date-time>

The delivery date for the line item. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

unitOfMeasureName
string or null

The unit of measure to apply. If left blank, the default unit of measure for the item will be applied.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint. If this value is not provided and the name matches a defined "default fee", the accounting code on the "default fee" will be used.

isCustomerItem
boolean or null

Determines whether or not to display the customer part number and customer part description.

customerPartNumber
string or null

Used for the part number on customer facing documents when IsCustomerItem is true

customerPartDescription
string or null [ 0 .. 2000 ] characters

Used for the description on customer facing documents when IsCustomerItem is true

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "quantity": 0.1,
  • "price": 0.1,
  • "pricingScheme": "price",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "description": "string",
  • "internalNotes": "string",
  • "itemNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "deliveryDate": "2019-08-24T14:15:22Z",
  • "unitOfMeasureName": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "isCustomerItem": true,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Create one or more part line items on a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
required
Array of objects (SalesOrderPartLineItemCreateDto) non-empty

The line items to add to a sales order.

Array (non-empty)
itemId
required
string = 24 characters

Item id associated with this line item.

quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. Note, if a price break exists for the item being added (vendor price breaks, item price breaks, etc), this value will be ignored as it is quantity-driven based on the price breaks that do/will exist, unless pricingScheme is price. If this value is not provided and no price breaks exist, the default will be 0. With pricingScheme set to margin, any non-zero price is rejected with a 400.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes (visible in job tracking).

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

Array of objects or null (CommonUrlDto)

A list of links/urls to associated with the line item.

deliveryDate
string or null <date-time>

The delivery date for the line item. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

unitOfMeasureName
string or null

The unit of measure to apply. If left blank, the default unit of measure for the item will be applied.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint. If this value is not provided and the name matches a defined "default fee", the accounting code on the "default fee" will be used.

isCustomerItem
boolean or null

Determines whether or not to display the customer part number and customer part description.

customerPartNumber
string or null

Used for the part number on customer facing documents when IsCustomerItem is true

customerPartDescription
string or null [ 0 .. 2000 ] characters

Used for the description on customer facing documents when IsCustomerItem is true

Responses

Request samples

Content type
{
  • "lineItems": [
    ]
}

Response samples

Content type
{
  • "ids": [
    ]
}

Get a specific part line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    }
}

Partially update a specific part line item for an salesOrder

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    }
}

Update a specific part line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
quantity
number <double> >= 0

The line item quantity

price
number or null <double> >= 0

The line item price. Note, if a price break exists for the item being added (vendor price breaks, item price breaks, etc), this value will be ignored as it is quantity-driven based on the price breaks that do/will exist, unless pricingScheme is price. If this value is not provided and no price breaks exist, the default will be 0. With pricingScheme set to margin, a non-zero price that differs from the line's current price is rejected with a 400.

pricingScheme
string (CommonEnumPricingSchemeInputEnum)
Enum: "price" "margin"

How a part line item is priced; omit to keep the line's current scheme. price: the line keeps the price sent and its margin is derived from cost. On a line with quantity price breaks, the price replaces that of the break applying at the line's quantity (the highest break at or below it, else the lowest); the other breaks are kept. margin: the price is derived from the line's margin and cost. A non-zero price other than the line's current price (on create, any non-zero price) is rejected with a 400.

isTaxable
boolean or null

Dictate if this line item is taxable.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.TaxRate will supercede the defined tax rate.

overrideTaxRate
boolean or null

Indicate if the tax supplied is intended to be an override.

description
string or null [ 0 .. 2000 ] characters

The part line item description. Defaults to the item's description if none specified.

internalNotes
string or null [ 1 .. 2000 ] characters

The line item internal notes. Aka production notes.

itemNotes
string or null [ 1 .. 2000 ] characters

The line item notes (visible in job tracking).

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

isPercentageDiscount
boolean or null

Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).

discountAmount
number or null <double>

The amount of the discount.

Array of objects or null (CommonUrlDto)

List of links associated with the line item.

deliveryDate
string or null <date-time>

The Delivery Date for the line item. Only the calendar date is used, exactly as written; any time or UTC offset is ignored.

unitOfMeasureName
string or null

The unit of measure to apply. If left blank, the existing unit of measure on the line item will be retained.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint. If this value is not provided and the name matches a defined "default fee", the accounting code on the "default fee" will be used.

isCustomerItem
boolean or null

Determines whether or not to display the customer part number and customer part description.

customerPartNumber
string or null

Used for the part number on customer facing documents when IsCustomerItem is true

customerPartDescription
string or null [ 0 .. 2000 ] characters

Used for the description on customer facing documents when IsCustomerItem is true

Responses

Request samples

Content type
{
  • "quantity": 0.1,
  • "price": 0.1,
  • "pricingScheme": "price",
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "overrideTaxRate": true,
  • "description": "string",
  • "internalNotes": "string",
  • "itemNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "deliveryDate": "2019-08-24T14:15:22Z",
  • "unitOfMeasureName": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "isCustomerItem": true,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string"
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "quantity": 0.1,
  • "price": 0.1,
  • "discountedPrice": 0.1,
  • "dueDate": "2019-08-24T14:15:22Z",
  • "isTaxable": true,
  • "overrideTaxRate": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "itemId": "stringstringstringstring",
  • "description": "string",
  • "accountingCodeId": "stringstringstringstring",
  • "internalNotes": "string",
  • "externalReferences": {
    },
  • "isPercentageDiscount": true,
  • "discountAmount": 0.1,
  • "links": [],
  • "customFields": {
    },
  • "parentLineId": "stringstringstringstringstringstring",
  • "subTotal": 0.1,
  • "preDiscountSubTotal": 0.1,
  • "customerPartNumber": "string",
  • "customerPartDescription": "string",
  • "number": 0,
  • "accountingDetails": {
    },
  • "isFullyInvoiced": true,
  • "isInvoiced": true,
  • "quantityInvoiced": 0.1,
  • "quantityOnInvoices": 0.1,
  • "costBreakdown": {
    }
}

Delete a specific part line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a list of part lines items for a sales order

path Parameters
salesOrderId
required
string = 24 characters
query Parameters
includeCostBreakdown
boolean
Default: false

Responses

Response samples

Content type
[
  • {
    }
]

Get the cost breakdown for a specific part line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "type": "estimated",
  • "quantity": 0,
  • "quantityScrapped": 0,
  • "calculatedOn": "2019-08-24T14:15:22Z",
  • "time": {
    },
  • "cumulative": {
    },
  • "cumulativeMaterial": {
    },
  • "cumulativeLabor": {
    },
  • "cumulativeMachine": {
    },
  • "cumulativeOutsideProcessing": {
    },
  • "itemMaterial": {
    },
  • "itemLabor": {
    },
  • "itemMachine": {
    },
  • "itemOutsideProcessing": {
    },
  • "shopRateSetup": {
    },
  • "shopRateRun": {
    },
  • "shopRateMachine": {
    },
  • "componentMaterial": {
    },
  • "componentLabor": {
    },
  • "componentMachine": {
    },
  • "componentOutsideProcessing": {
    },
  • "lines": [
    ]
}

Sales Order Part Line Item Custom Fields

Update (selectively) custom fields on a line item

path Parameters
salesOrderId
required
string = 24 characters

The sales order identifier that contains the line item

lineItemId
required
string = 36 characters

The line item identifier that contains the custom fields you want to update.

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Update (selectively) custom fields on a line item

path Parameters
salesOrderId
required
string = 24 characters

The sales order identifier that contains the line item

lineItemId
required
string = 36 characters

The line item identifier that contains the custom fields you want to update.

Request Body schema:
required

The custom fields to update

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Sales Order Part Line Item Full Routing

Create a full routing input item for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Response samples

Content type
{
  • "id": "string"
}

Delete a full routing input item from sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Gets a full routing input item for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

Update a full routing input item for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputItemId
required
string = 36 characters
Request Body schema:
required
itemId
required
string = 24 characters

The item id to be added. Please reference /api/items endpoint.

valueTypeUnits
required
number <double> >= 0

Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType

valueType
required
string (CommonEnumInputItemValueTypeEnum)
Enum: "creates" "requires"

Specifies how a routing input item quantity is measured.

fixedUnits
number or null <double> >= 0

Quantity required per lot, regardless of the parent quantity being made, in addition to FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueTypeUnits. Omitted or null on a new line means no fixed quantity. Where this body updates an existing line, omit it to leave the fixed quantity unchanged; null clears it.

Responses

Request samples

Content type
{
  • "itemId": "stringstringstringstring",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1
}

Lists the full routing input items for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Create a full routing input material for a sales order part line item. The material is added to this line's routing only; the item's own routing is not changed.

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
Request Body schema:
required
materialId
required
string non-empty

The material id to be added. Please reference /api/materials endpoint.

costing
required
string (CommonEnumMaterialRequirementCostingEnum)
Enum: "fullCost" "usageBased"

Specifies the costing of the material.

Array of objects or null (ItemRoutingInputMaterialNestingCreateDto) non-empty

Nestings associated to this material indicating bounding box dimensions and production quantities. The estimated material cost is taken from one nesting (see useForEstimatedCosting); with no nesting, the material costs zero.

routingStepId
string or null = 36 characters

The routing step id. This value should be the Id of an operation on the routing being edited, as returned by that routing's operations list (for example items/{itemId}/routing/operations/list, or the sales-order part line item routing's operations/list).

Responses

Request samples

Content type
{
  • "materialId": "string",
  • "costing": "fullCost",
  • "nestings": [
    ],
  • "routingStepId": "stringstringstringstringstringstring"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a full routing input material from a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputMaterialId
required
string = 36 characters

Responses

Update a full routing input material for a sales order part line item. Omitting routingStepId clears the material's operation.

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
inputMaterialId
required
string = 36 characters
Request Body schema:
required
costing
required
string (CommonEnumMaterialRequirementCostingEnum)
Enum: "fullCost" "usageBased"

Specifies the costing of the material.

routingStepId
string or null = 36 characters

The routing step id. This value should be the Id of an operation on the routing being edited, as returned by that routing's operations list (for example items/{itemId}/routing/operations/list, or the sales-order part line item routing's operations/list).

Responses

Request samples

Content type
{
  • "costing": "fullCost",
  • "routingStepId": "stringstringstringstringstringstring"
}

List input materials for a sales order part line item's routing

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Creates a full routing operation in process tracking fields for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
Request Body schema:
required
label
required
string non-empty

Label describing the in process tracking field

description
string or null

The description of the in process tracking field

units
string or null

The units used when this in process tracking field represents a number

fieldTypeId
required
string non-empty

The id of the field type for this in process tracking field

targetValue
number or null <double>

The target or ideal value of an in process tracking field response

minimumValue
number or null <double>

The minimum acceptable value for a tracking field response

maximumValue
number or null <double>

The maximum acceptable value for a tracking field response

triggeringBooleanValue
boolean or null

The target value for booleans. Typically Yes/No for proceeding with next checkpoint

triggeringDropdownValue
string or null

The target value for multiple options

required
boolean

Whether the in process tracking field requires a response

restricted
boolean

If true, only users with the appropriate permission will be allowed to save a response.

firstArticle
boolean

Only applies to the During phase. If true (and Required), this field will prevent adding any completed items to inventory if target is not met.

onFair
boolean

If true, this field's measurements are reported on the First Article Inspection Report (FAIR). Does not affect sampling frequency.

Responses

Request samples

Content type
{
  • "label": "string",
  • "description": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Response samples

Content type
{
  • "id": "string"
}

Deletes a full routing operation in process tracking field for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Gets a full routing operation in process tracking field for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
iptId
required
string <uuid>

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "label": "string",
  • "units": "string",
  • "fieldTypeId": "string",
  • "targetValue": 0.1,
  • "minimumValue": 0.1,
  • "maximumValue": 0.1,
  • "triggeringBooleanValue": true,
  • "triggeringDropdownValue": "string",
  • "required": true,
  • "restricted": true,
  • "firstArticle": true,
  • "onFair": true
}

Lists full routing operation in process tracking fields for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
phase
required
string (DomainInProcessTrackingFieldCheckpointPhase)
Enum: "preOperation" "duringOperation" "postOperation"
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to in process tracking fields whose label contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Get a summary of the make routing for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
[
  • {
    }
]

Creates a full routing operation for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
Request Body schema:
required
systemOperationId
required
string = 24 characters

System Operation Id

order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Operation instructions. Will default to the instructions defined on the operation when not provided.

inputMaterialIds
Array of strings or null non-empty

The ids on the input material to associate to this operation. This value should be the Id from the response from items/{itemId}/routing/input-materials/list

Responses

Request samples

Content type
{
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string",
  • "inputMaterialIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Removes a full routing operation for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Gets a full routing operation for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "systemOperationId": "stringstringstringstring",
  • "order": 0,
  • "isOutsideProcessing": true,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "machineTrackingEnabled": true,
  • "instructions": "string"
}

Updates a full routing operation for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
Request Body schema:
required
order
integer or null <int32> >= 0

The order of this operation. Operations with the same order are expected to run in parallel

object (ItemRoutingOutsideProcessingOperationDto)

Defines outside processing fields

object (ItemRoutingNormalOperationDto)

Defines non-outside-processing fields

leadDays
integer or null <int32> >= 0

Lead days. Will default to zero if not provided.

unattended
boolean or null

If true, the run portion of this step is unattended by an operator.

instructions
string or null [ 1 .. 2000 ] characters

Instructions for this operation.

Responses

Request samples

Content type
{
  • "order": 0,
  • "outsideProcessingOperation": {
    },
  • "operation": {
    },
  • "leadDays": 0,
  • "unattended": true,
  • "instructions": "string"
}

Gets a full routing operation item for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
operationItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "itemId": "stringstringstringstring",
  • "number": "string",
  • "revision": "string",
  • "description": "string",
  • "valueTypeUnits": 0.1,
  • "valueType": "creates",
  • "fixedUnits": 0.1,
  • "routingStepId": "stringstringstringstringstringstring",
  • "isMaterialLine": true
}

List full routing operation items for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
operationId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
number
string or null [ 1 .. 200 ] characters

Filter to items who's number contains the given string

Responses

Request samples

Content type
{
  • "number": "string"
}

Response samples

Content type
[
  • {
    }
]

Lists full routing operations for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters
query Parameters
skip
integer <int32> >= 0
Default: 0
take
integer <int32> [ 0 .. 5000 ]
Default: 50
Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to operations who's name contains the given string

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]

Gets a full routing routing for a sales order part line item

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
routingId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "allowContinuousFlow": true
}

Sales Order Refund Line Item

Create a refund line item on a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
description
string or null [ 0 .. 2000 ] characters

The refund line item description. Defaults to the item's description if none specified.

refundedLineId
required
string = 36 characters

The related, original line id that was refunded.

refundQuantity
required
number <double> >= 0

The quantity to be refunded.

refundAmount
required
number <double> >= 0

The refund amount.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

refundReasonCodeId
string or null = 24 characters

Refund reason code key identifier. Please reference /api/refund-reason-codes endpoint.

isReturn
boolean or null

Indicate if a return is expected.

returnQuantity
number or null <double>

The quantity to be returned.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "description": "string",
  • "refundedLineId": "stringstringstringstringstringstring",
  • "refundQuantity": 0.1,
  • "refundAmount": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "refundReasonCodeId": "stringstringstringstring",
  • "isReturn": true,
  • "returnQuantity": 0.1,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific refund line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineId
required
string = 36 characters

Responses

Get a list of refund lines items for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Update a specific refund line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
description
string or null [ 0 .. 2000 ] characters

The refund line item description.

refundQuantity
required
number <double> >= 0

The quantity to be refunded.

refundAmount
required
number <double> >= 0

The refund amount.

accountingCodeId
string or null = 24 characters

Accounting code key identifier. Please reference /api/accounting-codes endpoint.

refundReasonCodeId
string or null = 24 characters

Refund reason code key identifier. Please reference /api/refund-reason-codes endpoint.

isReturn
boolean or null

Indicate if a return is expected.

returnQuantity
number or null <double> >= 0

The quantity to be returned.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "description": "string",
  • "refundQuantity": 0.1,
  • "refundAmount": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "refundReasonCodeId": "stringstringstringstring",
  • "isReturn": true,
  • "returnQuantity": 0.1,
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "refundedLineId": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "refundQuantity": 0.1,
  • "refundAmount": 0.1,
  • "accountingCodeId": "stringstringstringstring",
  • "refundReasonCodeId": "stringstringstringstring",
  • "isReturn": true,
  • "returnQuantity": 0.1,
  • "externalReferences": {
    },
  • "number": 0,
  • "accountingDetails": {
    }
}

Sales Order Shipping Charge Line Item

Get a specific line item for a sales order of generic type

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "name": "string",
  • "description": "string",
  • "amount": 0.1,
  • "overrideTaxRate": true,
  • "isTaxable": true,
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "externalReferences": {
    },
  • "salesOrderLineItemId": "stringstringstringstringstringstring",
  • "number": 0,
  • "accountingDetails": {
    }
}

Sales Order Tax Line Item

Create a tax line item on a sales order

path Parameters
salesOrderId
required
string = 24 characters
Request Body schema:
required
description
string or null [ 1 .. 200 ] characters

Verbose description for this entity.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint. If FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxCodeId will be ignored.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxRate will supercede the defined tax rate.

object (SalesOrderTaxLineItemAvalaraOptions)

Options for use with Avalara (if enabled).

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific tax line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Get a specific tax line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "externalReferences": {
    },
  • "price": 0.1,
  • "accountingDetails": {
    }
}

Update a specific tax line item for a sales order

path Parameters
salesOrderId
required
string = 24 characters
lineItemId
required
string = 36 characters
Request Body schema:
required
description
string or null [ 1 .. 200 ] characters

Verbose description for this entity.

taxCodeId
string or null = 24 characters

Tax code key identifier. Please reference /api/tax-rates endpoint. If FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxCodeId will be ignored.

taxRate
number or null <double> >= 0

Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxRate will supercede the defined tax rate.

object (SalesOrderTaxLineItemAvalaraOptions)

Options for use with Avalara (if enabled).

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "description": "string",
  • "taxCodeId": "stringstringstringstring",
  • "taxRate": 0.1,
  • "avalaraOptions": {
    },
  • "externalReferences": {
    },
  • "price": 0.1,
  • "accountingDetails": {
    }
}

Get a list of tax lines items for a sales order

path Parameters
salesOrderId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

ScrapReport

Returns scrap entries logged within the supplied date range. Both dates are optional; the Domain layer defaults to the prior 90 days when neither is supplied.

query Parameters
startDateUtc
string <date-time>

Inclusive start of the report window (UTC). Defaults to today minus 90 days when omitted.

endDateUtc
string <date-time>

Exclusive end of the report window (UTC). Defaults to tomorrow when omitted.

Responses

Response samples

Content type
[
  • {
    }
]

Settings

Get the account's costing configuration.

Responses

Response samples

Content type
{
  • "overheadCalculationMethod": "laborBurdened"
}

Get the account's sales pricing configuration: whether margin-based and Shop Rate pricing are on, and the default margin and material markup, as percentages.

Responses

Response samples

Content type
{
  • "useMarginBasedPricing": true,
  • "useDefaultMargin": true,
  • "defaultMargin": 0.1,
  • "useShopRatePricing": true,
  • "defaultMaterialMarkup": 0.1
}

Shape Code

Get a shape code.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find shape codes based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Shipment Line Items (V3)

Search for shipment line items based on parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

The search parameters

packingStatus
string (ShippingDataPackingStatus)
Enum: "notPacked" "partiallyPacked" "fullyPacked" "overPacked"
itemId
string or null

Filter shipment line items based on item identifier.

shipmentId
string or null

Filter shipment line items based on shipment identifier.

salesOrderId
string or null

Filter shipment line items based on sales order identifier.

purchaseOrderId
string or null

Filter shipment line items based on purchase order identifier.

salesOrderLineItemIds
Array of strings or null

Filter shipment line items based on sales order line item(s) identifier.

purchaseOrderLineItemIds
Array of strings or null

Filter shipment line items based on purchase order line item identifier.

shipmentIds
Array of strings or null

Filter shipment line items based on shipment identifiers.

shipmentType
string (ShippingDataShipmentType)
Enum: "unknown" "standard" "outsideProcessing"

Responses

Request samples

Content type
{
  • "packingStatus": "notPacked",
  • "itemId": "string",
  • "shipmentId": "string",
  • "salesOrderId": "string",
  • "purchaseOrderId": "string",
  • "salesOrderLineItemIds": [
    ],
  • "purchaseOrderLineItemIds": [
    ],
  • "shipmentIds": [
    ],
  • "shipmentType": "unknown"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Shipment Custom Fields

Updates custom fields on a shipment

path Parameters
id
required
string = 24 characters

The shipment identifier

Request Body schema:
required

The custom fields

object

The custom fields

property name*
additional property
any

Responses

Request samples

Content type
{
  • "customFields": {
    }
}

Response samples

Content type
{
  • "customFields": {
    }
}

Shipments

Get a specific shipment. Includes the scheduled ship by date and, once shipped, the actual shipped date.

path Parameters
shipmentId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "status": "pending",
  • "packingStatus": "notPacked",
  • "trackingNumber": "string",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "shippedDate": "2019-08-24T14:15:22Z",
  • "shippedDateOverride": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "displayNotesToCustomer": true,
  • "shippingMethod": {
    },
  • "shippingAccount": {
    },
  • "shippingCost": 0.1,
  • "shippingCharge": 0.1,
  • "address": {
    },
  • "customFields": {
    },
  • "externalReferences": {
    }
}

Partially update a Shipment

path Parameters
shipmentId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "status": "pending",
  • "packingStatus": "notPacked",
  • "trackingNumber": "string",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "shippedDate": "2019-08-24T14:15:22Z",
  • "shippedDateOverride": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "displayNotesToCustomer": true,
  • "shippingMethod": {
    },
  • "shippingAccount": {
    },
  • "shippingCost": 0.1,
  • "shippingCharge": 0.1,
  • "address": {
    },
  • "customFields": {
    },
  • "externalReferences": {
    }
}

Update a specific shipment

path Parameters
shipmentId
required
string = 24 characters
Request Body schema:
required
shipByDate
string or null <date-time>

Ship by date.

notes
string or null [ 1 .. 2000 ] characters

Shipment notes.

displayNotesToCustomer
boolean

Whether or not to display the shipment notes on the pack list.

trackingNumber
string or null

The tracking number for the shipment.

shippingMethodId
string or null

The shipping method identifier

shippedDate
string or null <date-time>

The shipped date. Read-only: the value is accepted but not applied; the shipped date is set when the shipment ships.

shippedDateOverride
string or null <date-time>

The actual ship date override. Takes precedence over the shipped date wherever a ship date is reported. Send the calendar date at midnight UTC (e.g. 2014-10-23T00:00:00Z); it is stored as sent and reports compare it as a date. Null clears it. On update, a value outside 2000-01-01 to 2099-12-31 is rejected; patch does not range-check.

shippingCost
number or null <double>

The shipment's cost. Read-only: the value is accepted but not applied.

Responses

Request samples

Content type
{
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "displayNotesToCustomer": true,
  • "trackingNumber": "string",
  • "shippingMethodId": "string",
  • "shippedDate": "2019-08-24T14:15:22Z",
  • "shippedDateOverride": "2019-08-24T14:15:22Z",
  • "shippingCost": 0.1
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "status": "pending",
  • "packingStatus": "notPacked",
  • "trackingNumber": "string",
  • "shipByDate": "2019-08-24T14:15:22Z",
  • "shippedDate": "2019-08-24T14:15:22Z",
  • "shippedDateOverride": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "displayNotesToCustomer": true,
  • "shippingMethod": {
    },
  • "shippingAccount": {
    },
  • "shippingCost": 0.1,
  • "shippingCharge": 0.1,
  • "address": {
    },
  • "customFields": {
    },
  • "externalReferences": {
    }
}

Download the PDF for a shipment

The document is rendered when you call this, from the shipment's current state and the tenant's PDFs & Emails settings, so it is the same document the product's Download button produces rather than a stored copy of one sent earlier. Served in every shipment status, including Cancelled.

The file name is composed from the order the shipment fulfils and the shipment's sequence number rather than from the id you request by: SO1862-2.pdf for a shipment against sales order 1862, and PO104-1.pdf for an outside-processing shipment against purchase order 104. The packing slip is rendered against that order, so a shipment whose order has been deleted, or which is attached to neither, has no document to return and gives a 404.

path Parameters
shipmentId
required
string = 24 characters

Responses

Finds shipments based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
shipmentStatus
string (ShippingDataShipmentStatus)
Enum: "pending" "open" "shipped" "cancelled"
packingStatus
string (ShippingDataPackingStatus)
Enum: "notPacked" "partiallyPacked" "fullyPacked" "overPacked"
salesOrderId
string or null

Filter shipments by sales order identifier

purchaseOrderId
string or null

Filter shipments by purchase order identifier

shipmentType
string (ShippingDataShipmentType)
Enum: "unknown" "standard" "outsideProcessing"
shipmentIds
Array of strings

Filter shipments by shipment identifiers.

names
Array of strings <= 500 items

Filter shipments by shipment number, e.g. SHP-SO1234-1 or SHP-PO5678-2.

shipByDateBefore
string or null <date-time>

Filter to shipments scheduled to ship before this date (exclusive).

shipByDateAfter
string or null <date-time>

Filter to shipments scheduled to ship after this date (exclusive).

shippedDateBefore
string or null <date-time>

Filter to shipments actually shipped before this date (exclusive). Compares against the shipped date override (a shop-local date) when one is set, otherwise the shipped date (UTC).

shippedDateAfter
string or null <date-time>

Filter to shipments actually shipped after this date (exclusive). Compares against the shipped date override (a shop-local date) when one is set, otherwise the shipped date (UTC).

Responses

Request samples

Content type
{
  • "shipmentStatus": "pending",
  • "packingStatus": "notPacked",
  • "salesOrderId": "string",
  • "purchaseOrderId": "string",
  • "shipmentType": "unknown",
  • "shipmentIds": [
    ],
  • "names": [
    ],
  • "shipByDateBefore": "2019-08-24T14:15:22Z",
  • "shipByDateAfter": "2019-08-24T14:15:22Z",
  • "shippedDateBefore": "2019-08-24T14:15:22Z",
  • "shippedDateAfter": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Shipping Method

Get a shipping method.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string"
}

Find shipping methods based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter shipping methods based on their name.

ids
Array of strings or null non-empty

Filter shipping methods based on matching ids.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Tag

Get a tag.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Find tags based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter tags based on their name.

ids
Array of strings or null non-empty

Filter tags based on matching ids.

types
Array of strings or null (CommonEnumTagTypeEnum)
Enum: "item" "accountingCode" "itemCategory" "itemShape" "itemMaterial" "itemGrade" "itemGauge" "itemShippingContainer" "itemClass" "breakReasonCode" "refundReasonCode" "vendorOrderIssueCode" "chartOfAccounts"

Filter tags based on matching types.

Responses

Request samples

Content type
{
  • "name": "string",
  • "ids": [
    ],
  • "types": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Create a tag

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Descriptive name associated to the object

style
required
string (CommonEnumStyleEnum)
Enum: "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "connected"

Style enum (for tags).

description
string or null [ 1 .. 200 ] characters

Descriptive name associated to the object

types
required
Array of strings (CommonEnumTagTypeEnum) non-empty
Items Enum: "item" "accountingCode" "itemCategory" "itemShape" "itemMaterial" "itemGrade" "itemGauge" "itemShippingContainer" "itemClass" "breakReasonCode" "refundReasonCode" "vendorOrderIssueCode" "chartOfAccounts"

The type(s) of this tag.

Responses

Request samples

Content type
{
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Patch a tag

path Parameters
tagId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Update a tag

path Parameters
tagId
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Descriptive name associated to the object

style
required
string (CommonEnumStyleEnum)
Enum: "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "connected"

Style enum (for tags).

description
string or null [ 1 .. 200 ] characters

Descriptive name associated to the object

types
required
Array of strings (CommonEnumTagTypeEnum) non-empty
Items Enum: "item" "accountingCode" "itemCategory" "itemShape" "itemMaterial" "itemGrade" "itemGauge" "itemShippingContainer" "itemClass" "breakReasonCode" "refundReasonCode" "vendorOrderIssueCode" "chartOfAccounts"

The type(s) of this tag.

Responses

Request samples

Content type
{
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "style": "primary",
  • "description": "string",
  • "types": [
    ],
  • "deleted": true
}

Task

Add a task to a record. `title` and `relatedRecord.id` are required, and `relatedRecord.id` must resolve to a change order; `taskGroupId` must resolve to an active change order task group and `assignedToUserId` to a user. `sequence` omitted appends the task after the last step, and a value places it at that step, alongside any task already there. Creating the task already complete stamps `completedUtc` and `completedBy`.

Request Body schema:
required
object (TaskRelatedRecordDto)

The record a task hangs off. Every task currently hangs off a change order.

title
required
string [ 1 .. 500 ] characters

What the task is. Required

description
string or null [ 0 .. 2000 ] characters

A longer description of the task

notes
string or null [ 0 .. 2000 ] characters

Free-text notes on the task

dueDateUtc
string or null <date-time>

When the task is due (UTC)

assignedToUserId
string or null = 24 characters

The user to assign the task to. Must resolve to a user

taskGroupId
string or null = 24 characters

The group to file the task under. Must resolve to an active change order task group

complete
boolean

Whether the task is complete. Setting it true completes the task and stamps completedUtc and completedBy; setting it false re-opens the task and clears both

sequence
integer or null <int32>

The step the task should sit at. A value of 1 or more places it at that step, alongside any task already there. Null or a value below 1 appends it after the last step on a create and leaves it where it is on an update

Responses

Request samples

Content type
{
  • "relatedRecord": {
    },
  • "title": "string",
  • "description": "string",
  • "notes": "string",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "assignedToUserId": "stringstringstringstring",
  • "taskGroupId": "stringstringstringstring",
  • "complete": true,
  • "sequence": 0
}

Response samples

Content type
{
  • "id": "string",
  • "relatedRecord": {
    },
  • "title": "string",
  • "description": "string",
  • "notes": "string",
  • "sequence": 0,
  • "taskGroup": {
    },
  • "assignedTo": {
    },
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "complete": true,
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "completedBy": {
    },
  • "attachmentCount": 0,
  • "lastNotification": {
    }
}

Delete a task, with the attachments filed under it. The remaining tasks on its record are renumbered to close the step it vacated.

path Parameters
id
required
string

Responses

Get a task by id, with the record it hangs off. A task whose record has been deleted is treated as not existing.

path Parameters
id
required
string

Responses

Response samples

Content type
{
  • "id": "string",
  • "relatedRecord": {
    },
  • "title": "string",
  • "description": "string",
  • "notes": "string",
  • "sequence": 0,
  • "taskGroup": {
    },
  • "assignedTo": {
    },
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "complete": true,
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "completedBy": {
    },
  • "attachmentCount": 0,
  • "lastNotification": {
    }
}

Update a task. A full replacement: omitted fields are cleared. `complete` true completes the task and stamps `completedUtc` and `completedBy`; false re-opens it and clears both. `sequence` is the public reorder — a value of 1 or more moves the task to that step, alongside any task already there; omitted or below 1 leaves it where it is. `relatedRecord` is ignored: a task stays on the record it was created on.

path Parameters
id
required
string
Request Body schema:
required
object (TaskRelatedRecordDto)

The record a task hangs off. Every task currently hangs off a change order.

title
required
string [ 1 .. 500 ] characters

What the task is. Required

description
string or null [ 0 .. 2000 ] characters

A longer description of the task

notes
string or null [ 0 .. 2000 ] characters

Free-text notes on the task

dueDateUtc
string or null <date-time>

When the task is due (UTC)

assignedToUserId
string or null = 24 characters

The user to assign the task to. Must resolve to a user

taskGroupId
string or null = 24 characters

The group to file the task under. Must resolve to an active change order task group

complete
boolean

Whether the task is complete. Setting it true completes the task and stamps completedUtc and completedBy; setting it false re-opens the task and clears both

sequence
integer or null <int32>

The step the task should sit at. A value of 1 or more places it at that step, alongside any task already there. Null or a value below 1 appends it after the last step on a create and leaves it where it is on an update

Responses

Request samples

Content type
{
  • "relatedRecord": {
    },
  • "title": "string",
  • "description": "string",
  • "notes": "string",
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "assignedToUserId": "stringstringstringstring",
  • "taskGroupId": "stringstringstringstring",
  • "complete": true,
  • "sequence": 0
}

Response samples

Content type
{
  • "id": "string",
  • "relatedRecord": {
    },
  • "title": "string",
  • "description": "string",
  • "notes": "string",
  • "sequence": 0,
  • "taskGroup": {
    },
  • "assignedTo": {
    },
  • "dueDateUtc": "2019-08-24T14:15:22Z",
  • "complete": true,
  • "completedUtc": "2019-08-24T14:15:22Z",
  • "completedBy": {
    },
  • "attachmentCount": 0,
  • "lastNotification": {
    }
}

Finds tasks across every record they hang off; every task currently hangs off a change order. Narrow to one record's tasks with `relatedRecordIds`. Sorts on `title`, `sequence`, `dueDateUtc`, `completedUtc`, `complete`, `relatedRecordNumber`, `customer`, `assignedTo` or `taskGroup`; an unrecognised sort field falls back to `dueDateUtc` ascending.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
relatedRecordIds
Array of strings or null <= 1000 items

Only tasks hanging off these records. At most 1000 may be supplied

assignedToUserId
string or null

Only tasks assigned to this user

complete
boolean or null

True returns only complete tasks, false only incomplete ones; omitted returns both

customerId
string or null

Only tasks whose record is raised for this customer

taskGroupId
string or null

Only tasks filed under this group

dueFromUtc
string or null <date-time>

Inclusive lower bound on dueDateUtc

dueToUtc
string or null <date-time>

Inclusive upper bound on dueDateUtc

completedFromUtc
string or null <date-time>

Inclusive lower bound on completedUtc

completedToUtc
string or null <date-time>

Inclusive upper bound on completedUtc

overdue
boolean or null

True narrows to incomplete tasks whose due date has passed. False and omitted both apply no clause — this narrows, it does not select the complement

search
string or null

Case-insensitive search over the title, description, notes and the record's customer name, and an exact match on the record's number when the term reads as one

Responses

Request samples

Content type
{
  • "relatedRecordIds": [
    ],
  • "assignedToUserId": "string",
  • "complete": true,
  • "customerId": "string",
  • "taskGroupId": "string",
  • "dueFromUtc": "2019-08-24T14:15:22Z",
  • "dueToUtc": "2019-08-24T14:15:22Z",
  • "completedFromUtc": "2019-08-24T14:15:22Z",
  • "completedToUtc": "2019-08-24T14:15:22Z",
  • "overdue": true,
  • "search": "string"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Tax Rate

Create a new tax rate

Request Body schema:
required
code
required
string [ 1 .. 200 ] characters

The code for the tax rate. Must be unique to all active tax rates.

rate
required
number <double> >= 0

Tax rate. This is the ratio (0.17 = 17%)

applyToLandedCosts
boolean

Indicate if this tax rate applies to landed costs.

Responses

Request samples

Content type
{
  • "code": "string",
  • "rate": 0.1,
  • "applyToLandedCosts": true
}

Response samples

Content type
{
  • "id": "string"
}

Get a tax rate.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "code": "string",
  • "provider": "avalaraOrder",
  • "rate": 0.1,
  • "applyToLandedCosts": true,
  • "deleted": true
}

Update a tax rate

path Parameters
id
required
string = 24 characters
Request Body schema:
required
code
required
string [ 1 .. 200 ] characters

The code for the tax rate. Must be unique to all active tax rates.

rate
required
number <double> >= 0

Tax rate. This is the proportion (0.17 = 17%)

applyToLandedCosts
boolean

Indicate if this tax rate applies to landed costs.

Responses

Request samples

Content type
{
  • "code": "string",
  • "rate": 0.1,
  • "applyToLandedCosts": true
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "code": "string",
  • "provider": "avalaraOrder",
  • "rate": 0.1,
  • "applyToLandedCosts": true,
  • "deleted": true
}

Find tax rates based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
code
string or null [ 1 .. 200 ] characters

Filter tax rates based on their code.

ids
Array of strings or null non-empty

Filter tax rates based on matching ids.

Responses

Request samples

Content type
{
  • "code": "string",
  • "ids": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Time Clock Timers

Clocks in a specific user

Request Body schema:
userId
string or null = 24 characters

The user identifier to associate the clock in to. If not supplied, will use the user assigned to the api key used for authorization

Responses

Request samples

Content type
{
  • "userId": "stringstringstringstring"
}

Clocks out a specific user

Request Body schema:
userId
string or null = 24 characters

The user identifier to associate the timer to. If not supplied, will use the user assigned to the api key used for authorization

Responses

Request samples

Content type
{
  • "userId": "stringstringstringstring"
}

Finds daily time clocks based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

The search parameters

userId
string or null

Filter timers based on who started it

object (DtoCommonDateRangeFilter)

Date range used for filters

object (DtoCommonDateRangeFilter)

Date range used for filters

runningTimersOnly
boolean or null

Filter to only open timers

Responses

Request samples

Content type
{
  • "userId": "string",
  • "startedDateRange": {
    },
  • "stoppedDateRange": {
    },
  • "runningTimersOnly": true
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Timer

Creates a completed timer block retroactively. Unlike the start/stop endpoints, which stamp the server time on receipt, this endpoint accepts explicit timestamps so integrations can submit a whole block of time after the fact. Blocks may not be in the future, older than 30 days, or longer than 7 days.

Request Body schema:
userId
required
string = 24 characters

The user the timer block is attributed to.

jobId
required
string non-empty

The job identifier

itemToMakeId
required
string = 36 characters

The item to make identifier

operationId
required
string = 36 characters

The operation identifier

type
required
string (DomainTimeTrackingTimer_Type)
Enum: "setup" "run" "clockIn" "break" "labor" "machine"
startedOnUtc
required
string <date-time>

When the block started, in UTC.

stoppedOnUtc
required
string <date-time>

When the block stopped, in UTC. Must be after StartedOnUtc.

object or null

Arbitrary key-value data used to correlate this timer with external systems and search for it later.

Responses

Request samples

Content type
{
  • "userId": "stringstringstringstring",
  • "jobId": "string",
  • "itemToMakeId": "stringstringstringstringstringstring",
  • "operationId": "stringstringstringstringstringstring",
  • "type": "setup",
  • "startedOnUtc": "2019-08-24T14:15:22Z",
  • "stoppedOnUtc": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "jobId": "string",
  • "jobName": "string",
  • "itemToMakeId": "string",
  • "itemToMakeItemId": "string",
  • "itemToMakeName": "string",
  • "itemToMakeDescription": "string",
  • "jobOperationId": "string",
  • "jobOperationName": "string",
  • "jobOperationDescription": "string",
  • "jobOperationSystemOperationId": "string",
  • "workOrderId": "string",
  • "workOrderName": "string",
  • "workOrderOperationId": "string",
  • "workOrderOperationName": "string",
  • "startedById": "string",
  • "startedOnUtc": "2019-08-24T14:15:22Z",
  • "startedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "stoppedOnUtc": "2019-08-24T14:15:22Z",
  • "stoppedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "type": "setup",
  • "isRunning": true,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "elapsedTimeInSeconds": 0.1,
  • "operationTimeInSeconds": 0.1,
  • "laborTimeInSeconds": 0.1,
  • "machineTimeInSeconds": 0.1,
  • "segments": [
    ],
  • "externalReferences": {
    },
  • "details": {
    }
}

Finds timers based on search parameters

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:

The search parameters

userId
string or null

Filter timers based on who started it

jobId
string or null

Filter timers based on job

itemId
string or null = 24 characters

Filter to timers tracked against a job item-to-make that makes this item. Work-order timers never match.

runningTimersOnly
boolean or null

Filter to only running timers

types
Array of strings or null (DomainTimeTrackingTimer_Type) non-empty
Enum: "setup" "run" "clockIn" "break" "labor" "machine"

Filter to specific timer types

createdBeforeUtc
string or null <date-time>

Filters timers created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters timers created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedBeforeUtc
string or null <date-time>

Filters timers modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

modifiedAfterUtc
string or null <date-time>

Filters timers modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

startedBeforeUtc
string or null <date-time>

Filters timers started before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

startedAfterUtc
string or null <date-time>

Filters timers started after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedBeforeUtc
string or null <date-time>

Filters timers stopped before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedAfterUtc
string or null <date-time>

Filters timers stopped after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.

stoppedBeforeUtcOriginal
string or null <date-time>

Filters timers stopped before (exclusive) this parameter in UTC time. This explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting. If no time component is passed, midnight UTC will be used.

stoppedAfterUtcOriginal
string or null <date-time>

Filters timers stopped after (exclusive) this parameter in UTC time. This explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting. If no time component is passed, midnight UTC will be used.

Responses

Request samples

Content type
{
  • "userId": "string",
  • "jobId": "string",
  • "itemId": "stringstringstringstring",
  • "runningTimersOnly": true,
  • "types": [
    ],
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "modifiedBeforeUtc": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z",
  • "startedBeforeUtc": "2019-08-24T14:15:22Z",
  • "startedAfterUtc": "2019-08-24T14:15:22Z",
  • "stoppedBeforeUtc": "2019-08-24T14:15:22Z",
  • "stoppedAfterUtc": "2019-08-24T14:15:22Z",
  • "stoppedBeforeUtcOriginal": "2019-08-24T14:15:22Z",
  • "stoppedAfterUtcOriginal": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Partially update a timer

path Parameters
timerId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "jobId": "string",
  • "jobName": "string",
  • "itemToMakeId": "string",
  • "itemToMakeItemId": "string",
  • "itemToMakeName": "string",
  • "itemToMakeDescription": "string",
  • "jobOperationId": "string",
  • "jobOperationName": "string",
  • "jobOperationDescription": "string",
  • "jobOperationSystemOperationId": "string",
  • "workOrderId": "string",
  • "workOrderName": "string",
  • "workOrderOperationId": "string",
  • "workOrderOperationName": "string",
  • "startedById": "string",
  • "startedOnUtc": "2019-08-24T14:15:22Z",
  • "startedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "stoppedOnUtc": "2019-08-24T14:15:22Z",
  • "stoppedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "type": "setup",
  • "isRunning": true,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "elapsedTimeInSeconds": 0.1,
  • "operationTimeInSeconds": 0.1,
  • "laborTimeInSeconds": 0.1,
  • "machineTimeInSeconds": 0.1,
  • "segments": [
    ],
  • "externalReferences": {
    },
  • "details": {
    }
}

Update a specific timer

path Parameters
timerId
required
string = 24 characters
Request Body schema:
required
object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

additional property
object (CommonExternalReferenceDto)

The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences

type
string or null [ 0 .. 50 ] characters

Specifies the type of this identifier.

externalId
required
string [ 0 .. 500 ] characters

The external identifier

displayId
string or null [ 0 .. 500 ] characters

The id/number that a human sees. For a quote, this might be 'Q1000'. If this is null, the display will fall back to the ExternalId

status
string or null

A status for the external reference

url
string or null

An external url for the reference

modifiedUtc
string or null <date-time>

Date the external reference was modified

lastSyncedUtc
string or null <date-time>

Date the external system last successfully synced this reference. Set by integrations on successful sync only; null means never synced or that the sync timestamp isn't maintained by the integration.

Responses

Request samples

Content type
{
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "jobId": "string",
  • "jobName": "string",
  • "itemToMakeId": "string",
  • "itemToMakeItemId": "string",
  • "itemToMakeName": "string",
  • "itemToMakeDescription": "string",
  • "jobOperationId": "string",
  • "jobOperationName": "string",
  • "jobOperationDescription": "string",
  • "jobOperationSystemOperationId": "string",
  • "workOrderId": "string",
  • "workOrderName": "string",
  • "workOrderOperationId": "string",
  • "workOrderOperationName": "string",
  • "startedById": "string",
  • "startedOnUtc": "2019-08-24T14:15:22Z",
  • "startedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "stoppedOnUtc": "2019-08-24T14:15:22Z",
  • "stoppedOnUtcOriginal": "2019-08-24T14:15:22Z",
  • "type": "setup",
  • "isRunning": true,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "elapsedTimeInSeconds": 0.1,
  • "operationTimeInSeconds": 0.1,
  • "laborTimeInSeconds": 0.1,
  • "machineTimeInSeconds": 0.1,
  • "segments": [
    ],
  • "externalReferences": {
    },
  • "details": {
    }
}

Tool

Create a tool. A calibration frequency of none creates a reference gage, which is never due for calibration and takes no calibration records; every other frequency requires the last calibration date. The tool's sequential number is assigned server-side. Creates are not idempotent: a retried request creates a second tool — list tools before re-sending after a timeout.

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of the tool

serialNumber
string or null [ 0 .. 100 ] characters

The serial number of the tool

toolType
required
string (ToolType)
Enum: "bevelProtractor" "bendAngleGage" "boreGage" "caliper" "cmm" "coatingThicknessGage" "depthMicrometer" "gageBlocks" "hardnessTester" "heightGage" "micrometer" "opticalComparator" "pinGage" "plugGage" "radiusGage" "sineBar" "surfacePlate" "surfaceRoughnessTester" "thicknessGage" "threadPlugGage" "threadRingGage" "vmm" "attributeGage" "calibrationArtifact" "indicator" "calibrationStandard" "chamferGage" "lightMeter" "presetter" "digitalConductivityMeter" "ringGage" "profilometer" "splineGage" "tapeMeasure" "thermometer" "stopwatch" "torqueWrench" "instantMeasurementSystem" "protractor" "pressureGage" "tubeGage" "tubeMicrometer" "thermocouple" "ohmMeter" "multimeter" "weight" "fixture" "machine" "hygrothermometer" "concentricityGage" "cmmDatumSphere" "threadMicrometer" "insideMicrometer" "pinMicrometer" "setPlug" "nptRingGage" "nptPlugGage" "grooveMicrometer" "weldingEquipment" "surfaceTesterMaster"

The type of tool in the calibration system. Member values mirror FulcrumProduct.Domain.ToolCalibrations.Data.ToolType one-to-one (guarded by ToolCalibrationEnumParityTests) so tools map by underlying value.

toolStatus
string (ToolStatus)
Enum: "active" "inactive"

Whether the tool is in service. Mirrors FulcrumProduct.Domain.Tools.Data.ToolStatus by underlying value.

toolInactiveReason
string (ToolInactiveReason)
Enum: "lost" "damaged" "requiresRepair" "retired" "outForCalibration"

Why an inactive tool is out of service. Mirrors FulcrumProduct.Domain.Tools.Data.ToolInactiveReason by underlying value.

calibrationFrequency
required
string (ToolEnumCalibrationFrequency)
Enum: "recurringDays" "recurringMonths" "endOfMonth" "endOfQuarter" "endOfYear" "none"

How often the tool requires calibration. Mirrors FulcrumProduct.Domain.Tools.Data.CalibrationFrequency by underlying value.

calibrationInterval
integer or null <int32>

The interval count paired with a recurring calibration frequency (days or months); must be null for a reference gage

lastCalibrationDateUtc
string or null <date-time>

When the tool was last calibrated (UTC); required unless the tool is a reference gage

outForRecalibrationDateUtc
string or null <date-time>

When the tool left the shop for recalibration (UTC). Required when the inactive reason is outForCalibration, and must be null for every other reason (tandem validation)

notes
string or null [ 0 .. 2000 ] characters

Free-text notes

defaultUnitOfMeasureName
string or null [ 0 .. 100 ] characters

The unit of measure the tool measures in; must be a standard unit of measure

measurementRangeMin
number or null <double>

The lower bound of the tool's measurement range

measurementRangeMinPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the measurement range lower bound

measurementRangeMax
number or null <double>

The upper bound of the tool's measurement range

measurementRangeMaxPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the measurement range upper bound

accuracy
number or null <double>

The tool's rated accuracy

accuracyPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the rated accuracy

size
string or null [ 0 .. 100 ] characters

The one size a fixed-size gage checks, as stamped on it ("1/4-20", ".2500"). Only thread and go/no-go gage types keep it; on any other tool type it is cleared, and on those types the measurement range is cleared instead.

designation
string or null [ 0 .. 200 ] characters

A fixed-size gage's thread form, class, and GO/NO-GO member ("UNC-2B GO/NOGO"). Kept and cleared under the same rule as Size.

customerId
string or null = 24 characters

The customer that owns the tool; null for shop-owned tools. A customer-owned tool only takes customer-source calibration records

locationId
string or null = 24 characters

The location of the tool

Responses

Request samples

Content type
{
  • "name": "string",
  • "serialNumber": "string",
  • "toolType": "bevelProtractor",
  • "toolStatus": "active",
  • "toolInactiveReason": "lost",
  • "calibrationFrequency": "recurringDays",
  • "calibrationInterval": 0,
  • "lastCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "outForRecalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "defaultUnitOfMeasureName": "string",
  • "measurementRangeMin": 0.1,
  • "measurementRangeMinPrecision": 2147483647,
  • "measurementRangeMax": 0.1,
  • "measurementRangeMaxPrecision": 2147483647,
  • "accuracy": 0.1,
  • "accuracyPrecision": 2147483647,
  • "size": "string",
  • "designation": "string",
  • "customerId": "stringstringstringstring",
  • "locationId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "name": "string",
  • "serialNumber": "string",
  • "toolType": "bevelProtractor",
  • "toolStatus": "active",
  • "toolInactiveReason": "lost",
  • "calibrationFrequency": "recurringDays",
  • "calibrationInterval": 0,
  • "lastCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "nextCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "lastCalibrationResult": "fail",
  • "lastCalibratedBy": {
    },
  • "customer": {
    },
  • "location": {
    },
  • "notes": "string",
  • "defaultUnitOfMeasureName": "string",
  • "measurementRangeMin": 0.1,
  • "measurementRangeMinPrecision": 0,
  • "measurementRangeMax": 0.1,
  • "measurementRangeMaxPrecision": 0,
  • "accuracy": 0.1,
  • "accuracyPrecision": 0,
  • "size": "string",
  • "designation": "string",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "outForRecalibrationDateUtc": "2019-08-24T14:15:22Z"
}

Publish a new calibration template version for a tool. Template versions are append-only and immutable: this becomes the tool's new latest version, prior versions remain readable history, and existing calibration records stay pinned to the version they were measured against. Reference gages never take a calibration template. Publishes are not idempotent: a retried request publishes another version — check the latest version before re-sending after a timeout.

path Parameters
toolId
required
string = 24 characters
Request Body schema:
required
procedureName
string or null [ 0 .. 200 ] characters

The name of the calibration procedure

defaultMasterGageId
string or null = 24 characters

The id of the master gauge tool applied to checkpoints that don't specify their own

lowerTolerance
number or null <double>

The default lower tolerance applied to checkpoints

lowerTolPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the lower tolerance

upperTolerance
number or null <double>

The default upper tolerance applied to checkpoints

upperTolPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the upper tolerance

trialsPerCheckpoint
integer or null <int32> [ 1 .. 100 ]

How many trials each checkpoint requires per phase; between 1 and 100 when specified

minTempDegC
number or null <double>

The minimum acceptable ambient temperature (deg C) during calibration

maxTempDegC
number or null <double>

The maximum acceptable ambient temperature (deg C) during calibration

maxRelHumidity
number or null <double>

The maximum acceptable ambient relative humidity (%) during calibration

instructions
string or null [ 0 .. 2000 ] characters

Free-text calibration instructions

Array of objects or null (ToolRequestCalibrationCheckpointCreateDto)

The measurement checkpoints, in display order (array position defines the order)

Responses

Request samples

Content type
{
  • "procedureName": "string",
  • "defaultMasterGageId": "stringstringstringstring",
  • "lowerTolerance": 0.1,
  • "lowerTolPrecision": 2147483647,
  • "upperTolerance": 0.1,
  • "upperTolPrecision": 2147483647,
  • "trialsPerCheckpoint": 1,
  • "minTempDegC": 0.1,
  • "maxTempDegC": 0.1,
  • "maxRelHumidity": 0.1,
  • "instructions": "string",
  • "checkpoints": [
    ]
}

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "toolId": "string",
  • "version": 0,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "source": "user",
  • "procedureName": "string",
  • "defaultMasterGage": {
    },
  • "defaultMasterGageId": "string",
  • "lowerTolerance": 0.1,
  • "lowerTolPrecision": 0,
  • "upperTolerance": 0.1,
  • "upperTolPrecision": 0,
  • "trialsPerCheckpoint": 0,
  • "minTempDegC": 0.1,
  • "maxTempDegC": 0.1,
  • "maxRelHumidity": 0.1,
  • "instructions": "string",
  • "checkpoints": [
    ]
}

Get a tool by id, including its calibration schedule and latest calibration outcome.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "name": "string",
  • "serialNumber": "string",
  • "toolType": "bevelProtractor",
  • "toolStatus": "active",
  • "toolInactiveReason": "lost",
  • "calibrationFrequency": "recurringDays",
  • "calibrationInterval": 0,
  • "lastCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "nextCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "lastCalibrationResult": "fail",
  • "lastCalibratedBy": {
    },
  • "customer": {
    },
  • "location": {
    },
  • "notes": "string",
  • "defaultUnitOfMeasureName": "string",
  • "measurementRangeMin": 0.1,
  • "measurementRangeMinPrecision": 0,
  • "measurementRangeMax": 0.1,
  • "measurementRangeMaxPrecision": 0,
  • "accuracy": 0.1,
  • "accuracyPrecision": 0,
  • "size": "string",
  • "designation": "string",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "outForRecalibrationDateUtc": "2019-08-24T14:15:22Z"
}

Update a tool. A full replacement: omitted fields are cleared. The tool's calibration history is untouched — existing calibration records keep their pinned template versions and results.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name of the tool

serialNumber
string or null [ 0 .. 100 ] characters

The serial number of the tool

toolType
required
string (ToolType)
Enum: "bevelProtractor" "bendAngleGage" "boreGage" "caliper" "cmm" "coatingThicknessGage" "depthMicrometer" "gageBlocks" "hardnessTester" "heightGage" "micrometer" "opticalComparator" "pinGage" "plugGage" "radiusGage" "sineBar" "surfacePlate" "surfaceRoughnessTester" "thicknessGage" "threadPlugGage" "threadRingGage" "vmm" "attributeGage" "calibrationArtifact" "indicator" "calibrationStandard" "chamferGage" "lightMeter" "presetter" "digitalConductivityMeter" "ringGage" "profilometer" "splineGage" "tapeMeasure" "thermometer" "stopwatch" "torqueWrench" "instantMeasurementSystem" "protractor" "pressureGage" "tubeGage" "tubeMicrometer" "thermocouple" "ohmMeter" "multimeter" "weight" "fixture" "machine" "hygrothermometer" "concentricityGage" "cmmDatumSphere" "threadMicrometer" "insideMicrometer" "pinMicrometer" "setPlug" "nptRingGage" "nptPlugGage" "grooveMicrometer" "weldingEquipment" "surfaceTesterMaster"

The type of tool in the calibration system. Member values mirror FulcrumProduct.Domain.ToolCalibrations.Data.ToolType one-to-one (guarded by ToolCalibrationEnumParityTests) so tools map by underlying value.

toolStatus
string (ToolStatus)
Enum: "active" "inactive"

Whether the tool is in service. Mirrors FulcrumProduct.Domain.Tools.Data.ToolStatus by underlying value.

toolInactiveReason
string (ToolInactiveReason)
Enum: "lost" "damaged" "requiresRepair" "retired" "outForCalibration"

Why an inactive tool is out of service. Mirrors FulcrumProduct.Domain.Tools.Data.ToolInactiveReason by underlying value.

calibrationFrequency
required
string (ToolEnumCalibrationFrequency)
Enum: "recurringDays" "recurringMonths" "endOfMonth" "endOfQuarter" "endOfYear" "none"

How often the tool requires calibration. Mirrors FulcrumProduct.Domain.Tools.Data.CalibrationFrequency by underlying value.

calibrationInterval
integer or null <int32>

The interval count paired with a recurring calibration frequency (days or months); must be null for a reference gage

lastCalibrationDateUtc
string or null <date-time>

When the tool was last calibrated (UTC); required unless the tool is a reference gage

outForRecalibrationDateUtc
string or null <date-time>

When the tool left the shop for recalibration (UTC). Required when the inactive reason is outForCalibration, and must be null for every other reason (tandem validation)

notes
string or null [ 0 .. 2000 ] characters

Free-text notes

defaultUnitOfMeasureName
string or null [ 0 .. 100 ] characters

The unit of measure the tool measures in; must be a standard unit of measure

measurementRangeMin
number or null <double>

The lower bound of the tool's measurement range

measurementRangeMinPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the measurement range lower bound

measurementRangeMax
number or null <double>

The upper bound of the tool's measurement range

measurementRangeMaxPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the measurement range upper bound

accuracy
number or null <double>

The tool's rated accuracy

accuracyPrecision
integer or null <int32> [ 0 .. 2147483647 ]

The decimal precision of the rated accuracy

size
string or null [ 0 .. 100 ] characters

The one size a fixed-size gage checks, as stamped on it ("1/4-20", ".2500"). Only thread and go/no-go gage types keep it; on any other tool type it is cleared, and on those types the measurement range is cleared instead.

designation
string or null [ 0 .. 200 ] characters

A fixed-size gage's thread form, class, and GO/NO-GO member ("UNC-2B GO/NOGO"). Kept and cleared under the same rule as Size.

customerId
string or null = 24 characters

The customer that owns the tool; null for shop-owned tools. A customer-owned tool only takes customer-source calibration records

locationId
string or null = 24 characters

The location of the tool

Responses

Request samples

Content type
{
  • "name": "string",
  • "serialNumber": "string",
  • "toolType": "bevelProtractor",
  • "toolStatus": "active",
  • "toolInactiveReason": "lost",
  • "calibrationFrequency": "recurringDays",
  • "calibrationInterval": 0,
  • "lastCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "outForRecalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "notes": "string",
  • "defaultUnitOfMeasureName": "string",
  • "measurementRangeMin": 0.1,
  • "measurementRangeMinPrecision": 2147483647,
  • "measurementRangeMax": 0.1,
  • "measurementRangeMaxPrecision": 2147483647,
  • "accuracy": 0.1,
  • "accuracyPrecision": 2147483647,
  • "size": "string",
  • "designation": "string",
  • "customerId": "stringstringstringstring",
  • "locationId": "stringstringstringstring"
}

Response samples

Content type
{
  • "id": "string",
  • "number": 0,
  • "name": "string",
  • "serialNumber": "string",
  • "toolType": "bevelProtractor",
  • "toolStatus": "active",
  • "toolInactiveReason": "lost",
  • "calibrationFrequency": "recurringDays",
  • "calibrationInterval": 0,
  • "lastCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "nextCalibrationDateUtc": "2019-08-24T14:15:22Z",
  • "lastCalibrationResult": "fail",
  • "lastCalibratedBy": {
    },
  • "customer": {
    },
  • "location": {
    },
  • "notes": "string",
  • "defaultUnitOfMeasureName": "string",
  • "measurementRangeMin": 0.1,
  • "measurementRangeMinPrecision": 0,
  • "measurementRangeMax": 0.1,
  • "measurementRangeMaxPrecision": 0,
  • "accuracy": 0.1,
  • "accuracyPrecision": 0,
  • "size": "string",
  • "designation": "string",
  • "modifiedUtc": "2019-08-24T14:15:22Z",
  • "outForRecalibrationDateUtc": "2019-08-24T14:15:22Z"
}

Get the latest calibration template version for a tool — the checkpoints, tolerances, trial counts, environment ranges, and master gauges an in-house calibration is measured against.

path Parameters
toolId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "toolId": "string",
  • "version": 0,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "source": "user",
  • "procedureName": "string",
  • "defaultMasterGage": {
    },
  • "defaultMasterGageId": "string",
  • "lowerTolerance": 0.1,
  • "lowerTolPrecision": 0,
  • "upperTolerance": 0.1,
  • "upperTolPrecision": 0,
  • "trialsPerCheckpoint": 0,
  • "minTempDegC": 0.1,
  • "maxTempDegC": 0.1,
  • "maxRelHumidity": 0.1,
  • "instructions": "string",
  • "checkpoints": [
    ]
}

Get one calibration template version for a tool — for example the version a historical calibration record was measured against.

path Parameters
toolId
required
string = 24 characters
version
required
integer <int32>

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "toolId": "string",
  • "version": 0,
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "source": "user",
  • "procedureName": "string",
  • "defaultMasterGage": {
    },
  • "defaultMasterGageId": "string",
  • "lowerTolerance": 0.1,
  • "lowerTolPrecision": 0,
  • "upperTolerance": 0.1,
  • "upperTolPrecision": 0,
  • "trialsPerCheckpoint": 0,
  • "minTempDegC": 0.1,
  • "maxTempDegC": 0.1,
  • "maxRelHumidity": 0.1,
  • "instructions": "string",
  • "checkpoints": [
    ]
}

List a tool's calibration template versions, newest first, with each version's effective range.

path Parameters
toolId
required
string = 24 characters
query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Finds tools based on search parameters, including calibration due-date windows and the derived calibration status.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
search
string or null

Whitespace-insensitive search over tool name, serial number, tool type, size and designation. A value that reads as a plain number (0.75) or a span (0-6) also matches tools whose measurement range covers it, on tool types that keep a range (not thread and go/no-go gages, fixtures, machines or welding equipment).

toolTypes
Array of strings or null (ToolType)
Enum: "bevelProtractor" "bendAngleGage" "boreGage" "caliper" "cmm" "coatingThicknessGage" "depthMicrometer" "gageBlocks" "hardnessTester" "heightGage" "micrometer" "opticalComparator" "pinGage" "plugGage" "radiusGage" "sineBar" "surfacePlate" "surfaceRoughnessTester" "thicknessGage" "threadPlugGage" "threadRingGage" "vmm" "attributeGage" "calibrationArtifact" "indicator" "calibrationStandard" "chamferGage" "lightMeter" "presetter" "digitalConductivityMeter" "ringGage" "profilometer" "splineGage" "tapeMeasure" "thermometer" "stopwatch" "torqueWrench" "instantMeasurementSystem" "protractor" "pressureGage" "tubeGage" "tubeMicrometer" "thermocouple" "ohmMeter" "multimeter" "weight" "fixture" "machine" "hygrothermometer" "concentricityGage" "cmmDatumSphere" "threadMicrometer" "insideMicrometer" "pinMicrometer" "setPlug" "nptRingGage" "nptPlugGage" "grooveMicrometer" "weldingEquipment" "surfaceTesterMaster"

Only tools of these types

toolStatuses
Array of strings or null (ToolStatus)
Enum: "active" "inactive"

Only tools with these statuses

calibrationStatuses
Array of strings or null (ToolCalibrationEnumCalibrationResult)
Enum: "fail" "pass" "notApplicable"

Only tools whose derived status matches one of these values. Every tool is judged on its active track: a scheduled tool on its latest calibration, a reference gage on its latest in-house verification (a gage with no verifications derives NotApplicable).

reference
boolean

Only reference gages (tools with calibration frequency None). AND-combined with FulcrumProduct.PublicApi.Dto.Tool.Request.ToolsListParameters.CalibrationStatuses and the other filters.

isOverdue
boolean

Only tools whose next calibration is past due. Never matches an out-of-service tool — any inactive tool, unless its reason is OutForCalibration — because such a tool no longer needs calibration

dueWithin7Days
boolean

Only tools due for calibration within the next 7 days (includes overdue tools; never matches out-of-service tools — see FulcrumProduct.PublicApi.Dto.Tool.Request.ToolsListParameters.IsOverdue)

dueWithin30Days
boolean

Only tools due for calibration within the next 30 days (includes overdue tools; never matches out-of-service tools — see FulcrumProduct.PublicApi.Dto.Tool.Request.ToolsListParameters.IsOverdue)

requiresAction
boolean

Only tools needing action: inactive with reason RequiresRepair

calibrated
boolean

Only tools in good standing: active, not overdue, and passed their latest calibration

nextCalibrationDateFrom
string or null <date-time>

Only tools whose next calibration is due on or after this date, the whole day included. A tool with no due date never matches.

nextCalibrationDateTo
string or null <date-time>

Only tools whose next calibration is due on or before this date, the whole day included. A tool with no due date never matches.

modifiedAfterUtc
string or null <date-time>

Only tools whose record was written strictly after this UTC instant. Poll with the last-seen modifiedUtc to pick up creates and edits; time-derived transitions (a tool becoming due or overdue) and deletions do not advance modifiedUtc — use the due-window filters for schedule tracking

Responses

Request samples

Content type
{
  • "search": "string",
  • "toolTypes": [
    ],
  • "toolStatuses": [
    ],
  • "calibrationStatuses": [
    ],
  • "reference": true,
  • "isOverdue": true,
  • "dueWithin7Days": true,
  • "dueWithin30Days": true,
  • "requiresAction": true,
  • "calibrated": true,
  • "nextCalibrationDateFrom": "2019-08-24T14:15:22Z",
  • "nextCalibrationDateTo": "2019-08-24T14:15:22Z",
  • "modifiedAfterUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

Tool Calibration

Record a tool calibration: an external (vendor or customer) attestation, or an in-house calibration with per-checkpoint measurements against the tool's current calibration template. The server derives the result from the measurements and rejects a submitted result that disagrees; reference gages never take calibration records. A save recording a failure automatically opens an NCR, echoed as createdNcr. Creates are not idempotent: a retried request records a second calibration (and opens a second NCR on a failure) — list the tool's records before re-sending after a timeout.

Request Body schema:
required
toolId
required
string = 24 characters

The id of the tool the calibration was performed on

calibrationSource
required
string (ToolCalibrationEnumCalibrationSource)
Enum: "user" "vendor" "customer"

Who performed the calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.CalibrationSource by underlying value.

calibratedByUserId
string or null = 24 characters

The user who performed an in-house calibration; required for (and only valid with) the user source

calibratedByVendorId
string or null = 24 characters

The vendor that performed an external calibration; required for (and only valid with) the vendor source

result
required
string (ToolCalibrationEnumCalibrationResult)
Enum: "fail" "pass" "notApplicable"

The outcome of a calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationResult by underlying value.

calibrationDateUtc
required
string <date-time>

When the calibration was performed (UTC)

masterGageNames
string or null [ 0 .. 100 ] characters

Free-text master gauge names supplied with an external attestation; a measured in-house calibration derives its masters from the template instead

certificateNumber
string or null [ 0 .. 100 ] characters

The external certificate number supplied with the calibration

notes
string or null [ 0 .. 2000 ] characters

Free-text notes

asFoundNotes
string or null [ 0 .. 2000 ] characters

Free-text notes about the As-Found state

tempDegC
number or null <double>

Ambient temperature (deg C) captured during calibration

relHumidity
number or null <double>

Ambient relative humidity (%) captured during calibration

Array of objects or null (ToolCalibrationRequestCalibrationResponseSaveDto)

The per-checkpoint trial measurements; only valid on in-house (user-source) calibrations against the tool's current calibration template

Responses

Request samples

Content type
{
  • "toolId": "stringstringstringstring",
  • "calibrationSource": "user",
  • "calibratedByUserId": "stringstringstringstring",
  • "calibratedByVendorId": "stringstringstringstring",
  • "result": "fail",
  • "calibrationDateUtc": "2019-08-24T14:15:22Z",
  • "masterGageNames": "string",
  • "certificateNumber": "string",
  • "notes": "string",
  • "asFoundNotes": "string",
  • "tempDegC": 0.1,
  • "relHumidity": 0.1,
  • "responses": [
    ]
}

Response samples

Content type
{
  • "id": "string",
  • "tool": {
    },
  • "calibrationSource": "user",
  • "calibratedBy": {
    },
  • "result": "fail",
  • "asFoundResult": "fail",
  • "calibrationDateUtc": "2019-08-24T14:15:22Z",
  • "masterGageNames": "string",
  • "certificateNumber": "string",
  • "notes": "string",
  • "asFoundNotes": "string",
  • "tempDegC": 0.1,
  • "relHumidity": 0.1,
  • "templateVersion": 0,
  • "signedBy": {
    },
  • "signedUtc": "2019-08-24T14:15:22Z",
  • "responses": [
    ],
  • "version": "string",
  • "createdNcr": {
    }
}

Get a tool calibration record by id, including its per-checkpoint measurements, the pinned template version, and its sign state.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "string",
  • "tool": {
    },
  • "calibrationSource": "user",
  • "calibratedBy": {
    },
  • "result": "fail",
  • "asFoundResult": "fail",
  • "calibrationDateUtc": "2019-08-24T14:15:22Z",
  • "masterGageNames": "string",
  • "certificateNumber": "string",
  • "notes": "string",
  • "asFoundNotes": "string",
  • "tempDegC": 0.1,
  • "relHumidity": 0.1,
  • "templateVersion": 0,
  • "signedBy": {
    },
  • "signedUtc": "2019-08-24T14:15:22Z",
  • "responses": [
    ],
  • "version": "string"
}

Edit an unsigned tool calibration record. A full replacement: the submitted measurements replace the record's response set wholesale and the result is re-derived against the record's pinned template version. Signed records are immutable and reject every edit. The request must round-trip the version token from a read of the record; a stale token is rejected with 409.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
toolId
required
string = 24 characters

The id of the tool the calibration was performed on

calibrationSource
required
string (ToolCalibrationEnumCalibrationSource)
Enum: "user" "vendor" "customer"

Who performed the calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.CalibrationSource by underlying value.

calibratedByUserId
string or null = 24 characters

The user who performed an in-house calibration; required for (and only valid with) the user source

calibratedByVendorId
string or null = 24 characters

The vendor that performed an external calibration; required for (and only valid with) the vendor source

result
required
string (ToolCalibrationEnumCalibrationResult)
Enum: "fail" "pass" "notApplicable"

The outcome of a calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationResult by underlying value.

calibrationDateUtc
required
string <date-time>

When the calibration was performed (UTC)

masterGageNames
string or null [ 0 .. 100 ] characters

Free-text master gauge names supplied with an external attestation; a measured in-house calibration derives its masters from the template instead

certificateNumber
string or null [ 0 .. 100 ] characters

The external certificate number supplied with the calibration

notes
string or null [ 0 .. 2000 ] characters

Free-text notes

asFoundNotes
string or null [ 0 .. 2000 ] characters

Free-text notes about the As-Found state

tempDegC
number or null <double>

Ambient temperature (deg C) captured during calibration

relHumidity
number or null <double>

Ambient relative humidity (%) captured during calibration

Array of objects or null (ToolCalibrationRequestCalibrationResponseSaveDto)

The per-checkpoint trial measurements; only valid on in-house (user-source) calibrations against the tool's current calibration template

version
required
string [ 1 .. 256 ] characters

The record's opaque concurrency token from a read of this record, round-tripped unchanged. The edit is rejected with 409 Conflict when the record changed after that read

Responses

Request samples

Content type
{
  • "toolId": "stringstringstringstring",
  • "calibrationSource": "user",
  • "calibratedByUserId": "stringstringstringstring",
  • "calibratedByVendorId": "stringstringstringstring",
  • "result": "fail",
  • "calibrationDateUtc": "2019-08-24T14:15:22Z",
  • "masterGageNames": "string",
  • "certificateNumber": "string",
  • "notes": "string",
  • "asFoundNotes": "string",
  • "tempDegC": 0.1,
  • "relHumidity": 0.1,
  • "responses": [
    ],
  • "version": "string"
}

Response samples

Content type
{
  • "id": "string",
  • "tool": {
    },
  • "calibrationSource": "user",
  • "calibratedBy": {
    },
  • "result": "fail",
  • "asFoundResult": "fail",
  • "calibrationDateUtc": "2019-08-24T14:15:22Z",
  • "masterGageNames": "string",
  • "certificateNumber": "string",
  • "notes": "string",
  • "asFoundNotes": "string",
  • "tempDegC": 0.1,
  • "relHumidity": 0.1,
  • "templateVersion": 0,
  • "signedBy": {
    },
  • "signedUtc": "2019-08-24T14:15:22Z",
  • "responses": [
    ],
  • "version": "string",
  • "createdNcr": {
    }
}

Download the calibration certificate PDF for a record. A signed record serves the exact certificate frozen at signing; an unsigned record renders its certificate on demand.

path Parameters
id
required
string = 24 characters

Responses

Finds tool calibration records based on search parameters. Rows exclude the per-checkpoint measurements; fetch a record by id for those.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
toolId
string or null = 24 characters

Only calibration records for this tool

calibratedByVendorId
string or null = 24 characters

Only calibration records performed by this vendor

search
string or null

Search over tool name/serial number/type, master gauge names, certificate number, and notes

toolTypes
Array of strings or null (ToolType)
Enum: "bevelProtractor" "bendAngleGage" "boreGage" "caliper" "cmm" "coatingThicknessGage" "depthMicrometer" "gageBlocks" "hardnessTester" "heightGage" "micrometer" "opticalComparator" "pinGage" "plugGage" "radiusGage" "sineBar" "surfacePlate" "surfaceRoughnessTester" "thicknessGage" "threadPlugGage" "threadRingGage" "vmm" "attributeGage" "calibrationArtifact" "indicator" "calibrationStandard" "chamferGage" "lightMeter" "presetter" "digitalConductivityMeter" "ringGage" "profilometer" "splineGage" "tapeMeasure" "thermometer" "stopwatch" "torqueWrench" "instantMeasurementSystem" "protractor" "pressureGage" "tubeGage" "tubeMicrometer" "thermocouple" "ohmMeter" "multimeter" "weight" "fixture" "machine" "hygrothermometer" "concentricityGage" "cmmDatumSphere" "threadMicrometer" "insideMicrometer" "pinMicrometer" "setPlug" "nptRingGage" "nptPlugGage" "grooveMicrometer" "weldingEquipment" "surfaceTesterMaster"

Only calibration records for tools of these types

results
Array of strings or null (ToolCalibrationEnumCalibrationResult)
Enum: "fail" "pass" "notApplicable"

Only calibration records with these results

calibrationDateFromUtc
string or null <date-time>

Only calibration records performed on or after this UTC instant

calibrationDateToUtc
string or null <date-time>

Only calibration records performed on or before this UTC instant

Responses

Request samples

Content type
{
  • "toolId": "stringstringstringstring",
  • "calibratedByVendorId": "stringstringstringstring",
  • "search": "string",
  • "toolTypes": [
    ],
  • "results": [
    ],
  • "calibrationDateFromUtc": "2019-08-24T14:15:22Z",
  • "calibrationDateToUtc": "2019-08-24T14:15:22Z"
}

Response samples

Content type
{
  • "data": [
    ],
  • "page": 0,
  • "pageSize": 0,
  • "totalCount": 0,
  • "totalPages": 0,
  • "hasPreviousPage": true,
  • "hasNextPage": true
}

User

Get a specific user

path Parameters
userId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "employeeId": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "emailAddress": "[email protected]",
  • "phoneNumber": "string",
  • "roles": [
    ],
  • "deleted": true
}

Find users based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
firstName
string or null [ 1 .. 200 ] characters

Filter users based on their first name.

lastName
string or null [ 1 .. 200 ] characters

Filter users based on their last name.

emailAddress
string or null

Email address

phoneNumber
string or null

Phone number

roles
Array of strings or null

Filter users to those with any of the provided roles.

omniSearch
string or null

Search for users based on a string that should match any of the user's first name, last name, email address, phone number or roles.

includeDeleted
boolean

When true, inactive/deleted users are included in the results. Defaults to false, in which case only active users are returned.

Responses

Request samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "emailAddress": "string",
  • "phoneNumber": "string",
  • "roles": [
    ],
  • "omniSearch": "string",
  • "includeDeleted": true
}

Response samples

Content type
[
  • {
    }
]

User Status

Gets a status object for a user that displays various timer metrics (jobs/ops clocked into, whether on break, etc)

path Parameters
userId
required
string = 24 characters

The user identifier

Responses

Response samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "isOnBreak": true,
  • "breakStartAtUtc": "2019-08-24T14:15:22Z",
  • "elapsedBreakTimeInSeconds": 0.1,
  • "isClockedIn": true,
  • "clockedInAtUtc": "2019-08-24T14:15:22Z",
  • "elapsedClockedInTimeInSeconds": 0.1,
  • "jobs": [
    ]
}

Gets a list of user status objects based on parameters

Request Body schema:

The filter parameters

userIds
Array of strings

The user identifiers

Responses

Request samples

Content type
{
  • "userIds": [
    ]
}

Response samples

Content type
[
  • {
    }
]

Vendor

Create a new vendor

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name to give the entity. Must be unique to all active vendors.

paymentTermsId
string or null = 24 characters

Payment terms key identifier. Please reference /api/payment-terms endpoint.

vendorCode
string or null non-empty

Unique identifier for this vendor.

notes
string or null [ 1 .. 2000 ] characters

General notes associated to this vendor

currencyCode
string or null

The currency of the vendor

object or null

Arbitrary key-value-pair like data that can be used to later on search for the vendor

Responses

Request samples

Content type
{
  • "name": "string",
  • "paymentTermsId": "stringstringstringstring",
  • "vendorCode": "string",
  • "notes": "string",
  • "currencyCode": "string",
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "string"
}

Partially update a vendor

path Parameters
vendorId
required
string = 24 characters
Request Body schema: application/json-patch+json
Array
op
string
value
any
path
string
from
string

Source path — present for move/copy operations, absent otherwise.

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    }
]

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "vendorCode": "string",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "currencyCode": "string",
  • "status": "string",
  • "active": true,
  • "leadTime": 0,
  • "vendorSince": "2019-08-24T14:15:22Z"
}

Update a specific vendor

path Parameters
vendorId
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

The name to give the entity. Must be unique to all active vendors.

paymentTermsId
string or null = 24 characters

Payment terms key identifier. Please reference /api/payment-terms endpoint.

vendorCode
string or null non-empty

Unique identifier for this vendor.

notes
string or null [ 1 .. 2000 ] characters

General notes associated to this vendor.

currencyCode
string or null

The currency of the vendor. When omitted, the existing value is preserved.

status
string or null

Approval/quality status of the vendor. One of: Approved, Probation, Monitor, Disqualified, Other. When omitted, the existing value is preserved.

active
boolean or null

Whether the vendor is active. When omitted, the existing value is preserved.

leadTime
integer or null <int32> >= 0

Default lead time in days.

url
string or null <uri>

Vendor website URL.

vendorSince
string or null <date-time>

Date the vendor relationship began.

object or null

Arbitrary key-value-pair like data that can be used to later on search for this line item.

Responses

Request samples

Content type
{
  • "name": "string",
  • "paymentTermsId": "stringstringstringstring",
  • "vendorCode": "string",
  • "notes": "string",
  • "currencyCode": "string",
  • "status": "string",
  • "active": true,
  • "leadTime": 0,
  • "vendorSince": "2019-08-24T14:15:22Z",
  • "externalReferences": {
    }
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "vendorCode": "string",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "currencyCode": "string",
  • "status": "string",
  • "active": true,
  • "leadTime": 0,
  • "vendorSince": "2019-08-24T14:15:22Z"
}

Get a vendor.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "vendorCode": "string",
  • "paymentTermsId": "stringstringstringstring",
  • "paymentTerms": {
    },
  • "notes": "string",
  • "externalReferences": {
    },
  • "customFields": {
    },
  • "currencyCode": "string",
  • "status": "string",
  • "active": true,
  • "leadTime": 0,
  • "vendorSince": "2019-08-24T14:15:22Z"
}

Find vendors based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
name
string or null [ 1 .. 200 ] characters

Filter to vendors who's name contains the given string

vendorCode
string or null non-empty

Unique identifier for this vendor.

object (CommonExternalReferenceFindDto)

Search parameter for identifier record(s) via their external identifiers.

Responses

Request samples

Content type
{
  • "name": "string",
  • "vendorCode": "string",
  • "externalReference": {
    }
}

Response samples

Content type
[
  • {
    }
]

Vendor Address

Create a new vendor address

path Parameters
vendorId
required
string = 24 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).

address1
required
string [ 1 .. 200 ] characters

Primary address line.

address2
string or null [ 1 .. 200 ] characters

Second address line.

address3
string or null [ 1 .. 200 ] characters

Third address line.

city
required
string [ 1 .. 200 ] characters

Address city

stateProvince
string or null [ 1 .. 200 ] characters

Address state/province.

postalCode
required
string [ 1 .. 200 ] characters

Postal/zip code.

country
string or null [ 1 .. 200 ] characters

Country identifier.

shippingLeadTime
integer or null <int32> >= 0

Lead time for shipping contents.

primaryBilling
boolean

Signifies if this is a primary billing address.

primaryShipping
boolean

Signifies if this is a primary billing address.

email
string or null <email>

Email address

phone
string or null

Associated phone number

fax
string or null

Associated fax number

notes
string or null

General notes associated to this customer address

Responses

Request samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific vendor address

path Parameters
vendorId
required
string = 24 characters
vendorAddressId
required
string = 36 characters

Responses

Get a specific vendor address

path Parameters
vendorId
required
string = 24 characters
vendorAddressId
required
string = 36 characters

Responses

Response samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "id": "stringstringstringstringstringstring",
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Update a specific vendor address

path Parameters
vendorId
required
string = 24 characters
vendorAddressId
required
string = 36 characters
Request Body schema:
required
name
string or null [ 1 .. 200 ] characters

Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).

address1
required
string [ 1 .. 200 ] characters

Primary address line.

address2
string or null [ 1 .. 200 ] characters

Second address line.

address3
string or null [ 1 .. 200 ] characters

Third address line.

city
required
string [ 1 .. 200 ] characters

Address city

stateProvince
string or null [ 1 .. 200 ] characters

Address state/province.

postalCode
required
string [ 1 .. 200 ] characters

Postal/zip code.

country
string or null [ 1 .. 200 ] characters

Country identifier.

shippingLeadTime
integer or null <int32> >= 0

Lead time for shipping contents.

primaryBilling
boolean

Signifies if this is a primary billing address.

primaryShipping
boolean

Signifies if this is a primary billing address.

email
string or null <email>

Email address

phone
string or null

Associated phone number

fax
string or null

Associated fax number

notes
string or null

General notes associated to this customer address

Responses

Request samples

Content type
{
  • "name": "string",
  • "address1": "string",
  • "address2": "string",
  • "address3": "string",
  • "city": "string",
  • "stateProvince": "string",
  • "postalCode": "string",
  • "country": "string",
  • "shippingLeadTime": 0,
  • "primaryBilling": true,
  • "primaryShipping": true,
  • "email": "[email protected]",
  • "phone": "string",
  • "fax": "string",
  • "notes": "string"
}

Get a list of addresses for a vendor

path Parameters
vendorId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Vendor Contact

Create a new vendor contact

path Parameters
vendorId
required
string = 24 characters
Request Body schema:
required
firstName
required
string [ 1 .. 200 ] characters

First name

lastName
string or null [ 1 .. 200 ] characters

Last name

position
string or null [ 1 .. 200 ] characters

Position / Job Title

phone
string or null

Phone number

cellPhone
string or null

Cellphone number

email
string or null <email>

Email address

fax
string or null

Fax number

notes
string or null [ 1 .. 2000 ] characters

Internal notes about this contact.

emailPurchaseOrders
boolean

Whether this contact should receive purchase order emails.

Responses

Request samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "phone": "string",
  • "cellPhone": "string",
  • "email": "[email protected]",
  • "fax": "string",
  • "notes": "string",
  • "emailPurchaseOrders": true
}

Response samples

Content type
{
  • "id": "string"
}

Delete a specific customer contact

path Parameters
vendorId
required
string = 24 characters

The id of the vendor to modify contacts for

contactId
required
string = 36 characters

The id of the vendor contact.

Responses

Get a specific vendor contact

path Parameters
vendorId
required
string = 24 characters

The id of the vendor to modify contacts for

contactId
required
string = 36 characters

The id of the vendor contact.

Responses

Response samples

Content type
{
  • "id": "stringstringstringstringstringstring",
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "cellPhone": "string",
  • "phone": "string",
  • "email": "[email protected]",
  • "fax": "string",
  • "notes": "string",
  • "emailPurchaseOrders": true
}

Update a specific vendor contact

path Parameters
vendorId
required
string = 24 characters

The id of the vendor to modify contacts for

contactId
required
string = 36 characters

The id of the vendor contact.

Request Body schema:
required

The new data to apply to the given contact

firstName
required
string [ 1 .. 200 ] characters

First name

lastName
string or null [ 1 .. 200 ] characters

Last name

position
string or null [ 1 .. 200 ] characters

Position / Job Title

phone
string or null

Phone number

cellPhone
string or null

Cellphone number

email
string or null <email>

Email address

fax
string or null

Fax number

notes
string or null [ 1 .. 2000 ] characters

Internal notes about this contact.

emailPurchaseOrders
boolean or null

Whether this contact should receive purchase order emails. When omitted, the existing value is preserved.

Responses

Request samples

Content type
{
  • "firstName": "string",
  • "lastName": "string",
  • "position": "string",
  • "phone": "string",
  • "cellPhone": "string",
  • "email": "[email protected]",
  • "fax": "string",
  • "notes": "string",
  • "emailPurchaseOrders": true
}

Get a list of contacts for a vendor

path Parameters
vendorId
required
string = 24 characters

Responses

Response samples

Content type
[
  • {
    }
]

Work Order

Create a work order from job operations. Each entry in `operations` becomes one work-order operation owning the job operations it lists; every job operation is claimed for this work order, so a later request naming one of them is refused. `status` accepts only `needsReview` (the default) or `approved`.

Request Body schema:
required

The work order to create.

name
string or null [ 1 .. 200 ] characters

Name of the work order. When omitted, the work order is named by its number.

status
string (WorkOrderStatusEnum)
Enum: "needsReview" "approved" "scheduled" "inProgress" "complete" "cancelled"

Work order status

priority
string (JobPriorityEnum)
Enum: "low" "moderate" "high"

Job priority

productionDueDateUtc
string or null <date-time>

Production due date. When omitted, the earliest production due date among the jobs is used.

required
Array of objects (WorkOrderCreateOperationDto) [ 1 .. 50 ] items

The work-order operations to create, 1 to 50.

Responses

Request samples

Content type
{
  • "name": "string",
  • "status": "needsReview",
  • "priority": "low",
  • "productionDueDateUtc": "2019-08-24T14:15:22Z",
  • "operations": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Get a specific work order

path Parameters
workOrderId
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "number": 0,
  • "name": "string",
  • "createdUtc": "2019-08-24T14:15:22Z",
  • "completedOnUtc": "2019-08-24T14:15:22Z",
  • "cancelledOnUtc": "2019-08-24T14:15:22Z",
  • "scheduledStartUtc": "2019-08-24T14:15:22Z",
  • "scheduledEndUtc": "2019-08-24T14:15:22Z",
  • "status": "needsReview",
  • "priority": "low"
}

Get the nest planned onto a work-order operation — the parts it cuts, the sheets it cuts them from, how far through those sheets the shop is, and the parts the nest could not place.

path Parameters
workOrderId
required
string = 24 characters

Id of the work order the operation belongs to.

workOrderOperationId
required
string [ 24 .. 36 ] characters

Id of the work-order operation to read the nest from.

Responses

Response samples

Content type
{
  • "workOrderId": "string",
  • "workOrderOperationId": "string",
  • "operation": {
    },
  • "isNested": true,
  • "nestingSoftware": "unknown",
  • "machineName": "string",
  • "nestingFile": {
    },
  • "machineTimeSeconds": 0.1,
  • "parts": [
    ],
  • "plates": [
    ],
  • "unplacedParts": [
    ]
}

Replace the nest planned onto a work-order operation with the parts, sheets and unplaced parts sent. The stored parts list is derived from the sheets — a part on no sheet is dropped and a sheet part number with no `parts` entry is added at quantity 0 — so the response carries the nest as stored, not an echo. Sheets linked to a material item become the operation's required materials. Empty `parts` and `plates` clear the nest. The nest report the stored nest was read from is kept across the replace.

path Parameters
workOrderId
required
string = 24 characters

Id of the work order the operation belongs to.

workOrderOperationId
required
string [ 24 .. 36 ] characters

Id of the work-order operation to store the nest on.

Request Body schema:
required

The nest to store.

nestingSoftware
string (WorkOrderNestingSetupNestingSoftwareEnum)
Enum: "unknown" "proNest" "nestingCenter" "radan" "lantek" "drAbe" "boost" "sigmaNest" "cadman" "fulcrum"

The nesting software a nest came from.

machineName
string or null [ 0 .. 200 ] characters

Machine the nest was programmed for, as named by the nesting software.

Array of objects (WorkOrderNestingSetupPartSaveDto) <= 2000 items

The distinct parts the nest cuts, up to 2000. The stored list is derived from the sheets: a part on no sheet is dropped, and a sheet part number with no entry here is added at quantity 0. Empty together with plates clears the nest.

Array of objects (WorkOrderNestingSetupPlateSaveDto) <= 1000 items

The sheets the nest requires, up to 1000, carrying at most 20000 placements between them.

Array of objects (WorkOrderNestingSetupUnplacedPartSaveDto) <= 2000 items

Parts the nest could not place in full, up to 2000.

Responses

Request samples

Content type
{
  • "nestingSoftware": "unknown",
  • "machineName": "string",
  • "parts": [
    ],
  • "plates": [
    ],
  • "unplacedParts": [
    ]
}

Response samples

Content type
{
  • "nestingSetup": {
    },
  • "validationIssues": [
    ]
}

Find work orders based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
workOrderIds
Array of strings or null [ 1 .. 500 ] items

Filter to work orders whose ids are in the list

numbers
Array of integers or null <int32> [ 1 .. 500 ] items [ items <int32 > ]

Filter to only given numbers

names
Array of strings or null [ 1 .. 500 ] items

Filter to only given names

statuses
Array of strings or null (WorkOrderStatusEnum) [ 1 .. 500 ] items
Enum: "needsReview" "approved" "scheduled" "inProgress" "complete" "cancelled"

Filter to match the given statuses

createdBeforeUtc
string or null <date-time>

Filters jobs created before (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.

createdAfterUtc
string or null <date-time>

Filters jobs created after (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.

completedOnFrom
string or null <date-time>

Filter to work orders completed on or after this date, as a whole day in the shop's timezone. Any time component is ignored.

completedOnTo
string or null <date-time>

Filter to work orders completed on or before this date, as a whole day in the shop's timezone, so a work order completed later that same shop day still matches.

Responses

Request samples

Content type
{
  • "workOrderIds": [
    ],
  • "numbers": [
    ],
  • "names": [
    ],
  • "statuses": [
    ],
  • "createdBeforeUtc": "2019-08-24T14:15:22Z",
  • "createdAfterUtc": "2019-08-24T14:15:22Z",
  • "completedOnFrom": "2019-08-24T14:15:22Z",
  • "completedOnTo": "2019-08-24T14:15:22Z"
}

Response samples

Content type
[
  • {
    }
]

WorkCenter

Create a work center.

Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

departmentId
string or null = 24 characters

Department identifier. Please reference /api/departments endpoint.

setupRate
number or null <double> >= 0

Hourly cost rate for setup.

laborRate
number or null <double> >= 0

Hourly cost rate for labor.

overheadRate
number or null <double> >= 0

Hourly cost rate for overhead.

machineRate
number or null <double> >= 0

Hourly cost rate for machine. Providing a value turns on machine time for this work center.

equipmentIds
Array of strings or null

Identifiers of the equipment associated with this work center. Please reference /api/equipment endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "departmentId": "stringstringstringstring",
  • "setupRate": 0.1,
  • "laborRate": 0.1,
  • "overheadRate": 0.1,
  • "machineRate": 0.1,
  • "equipmentIds": [
    ]
}

Response samples

Content type
{
  • "id": "string"
}

Get a workcenter.

path Parameters
id
required
string = 24 characters

Responses

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "departmentId": "stringstringstringstring",
  • "setupRate": 0.1,
  • "runRate": 0.1,
  • "laborRate": 0.1,
  • "overheadRate": 0.1,
  • "machineRate": 0.1,
  • "deleted": true,
  • "equipment": [
    ]
}

Update a work center.

path Parameters
id
required
string = 24 characters
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters

Identifying name. Must be unique.

departmentId
string or null = 24 characters

Department identifier. Please reference /api/departments endpoint.

setupRate
number or null <double> >= 0

Hourly cost rate for setup.

laborRate
number or null <double> >= 0

Hourly cost rate for labor.

overheadRate
number or null <double> >= 0

Hourly cost rate for overhead.

machineRate
number or null <double> >= 0

Hourly cost rate for machine. Providing a value turns on machine time for this work center.

equipmentIds
Array of strings or null

Identifiers of the equipment associated with this work center. Replaces the existing set. Please reference /api/equipment endpoint.

Responses

Request samples

Content type
{
  • "name": "string",
  • "departmentId": "stringstringstringstring",
  • "setupRate": 0.1,
  • "laborRate": 0.1,
  • "overheadRate": 0.1,
  • "machineRate": 0.1,
  • "equipmentIds": [
    ]
}

Response samples

Content type
{
  • "id": "stringstringstringstring",
  • "name": "string",
  • "departmentId": "stringstringstringstring",
  • "setupRate": 0.1,
  • "runRate": 0.1,
  • "laborRate": 0.1,
  • "overheadRate": 0.1,
  • "machineRate": 0.1,
  • "deleted": true,
  • "equipment": [
    ]
}

Find workcenters based on search parameters.

query Parameters
Sort.Field
string non-empty

Sort field

Sort.Dir
string (CommonEnumSortDirectionEnum)
Enum: "ascending" "descending"

Sort direction

Skip
integer <int32> >= 0

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.

Take
integer <int32> [ 0 .. 5000 ]

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 50. 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.

Request Body schema:
ids
Array of strings or null non-empty

Filter workcenters based on matching ids.

name
string or null [ 1 .. 200 ] characters

Filter workcenters based on their name.

Responses

Request samples

Content type
{
  • "ids": [
    ],
  • "name": "string"
}

Response samples

Content type
[
  • {
    }
]