Fulcrumpro Job API
The Job API from Fulcrumpro — 6 operation(s) for job.
The Job API from Fulcrumpro — 6 operation(s) for job.
openapi: 3.0.4
info:
title: Fulcrum Public Accounting Code Job API
version: v1
servers:
- url: https://api.fulcrumpro.com
tags:
- name: Job
paths:
/api/jobs/{jobId}/cancel:
post:
tags:
- Job
summary: Cancel a specific job
operationId: CancelJob
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
responses:
'200':
description: Success
'204':
description: Job did not exist
x-c4-mutation: true
x-c4-required-permissions:
- Jobs-Jobs-Edit Job
/api/jobs:
post:
tags:
- Job
summary: Create a new job
operationId: CreateJob
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JobCreateDto'
application/json:
schema:
$ref: '#/components/schemas/JobCreateDto'
text/json:
schema:
$ref: '#/components/schemas/JobCreateDto'
application/*+json:
schema:
$ref: '#/components/schemas/JobCreateDto'
required: true
responses:
'200':
description: Job created
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedResponseDto'
application/problem+json:
schema:
$ref: '#/components/schemas/CreatedResponseDto'
'400':
description: Validation issues with input
x-c4-mutation: true
x-c4-required-permissions:
- Jobs-Jobs-Edit Job
/api/jobs/{jobId}:
get:
tags:
- Job
summary: Get a specific job
operationId: GetJob
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
responses:
'200':
description: The job for the given id
content:
application/json:
schema:
$ref: '#/components/schemas/JobDto'
application/problem+json:
schema:
$ref: '#/components/schemas/JobDto'
'404':
description: Job did not exist
x-c4-required-permissions:
- Jobs-Jobs-View Job
patch:
tags:
- Job
summary: Partially update a job
operationId: PatchJob
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatchDocument'
responses:
'200':
description: Job item
content:
application/json:
schema:
$ref: '#/components/schemas/JobDto'
application/problem+json:
schema:
$ref: '#/components/schemas/JobDto'
'404':
description: Job did not exist
x-c4-mutation: true
x-c4-required-permissions:
- Jobs-Jobs-Edit Job
put:
tags:
- Job
summary: Update a job
operationId: UpdateJob
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JobUpdateDto'
application/json:
schema:
$ref: '#/components/schemas/JobUpdateDto'
text/json:
schema:
$ref: '#/components/schemas/JobUpdateDto'
application/*+json:
schema:
$ref: '#/components/schemas/JobUpdateDto'
required: true
responses:
'200':
description: Job item
content:
application/json:
schema:
$ref: '#/components/schemas/JobDto'
application/problem+json:
schema:
$ref: '#/components/schemas/JobDto'
'404':
description: Job did not exist
/api/jobs/{jobId}/tracking:
get:
tags:
- Job
summary: Get a specific job's tracking information
operationId: GetJobTracking
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
responses:
'200':
description: The job for the given id
content:
application/json:
schema:
$ref: '#/components/schemas/JobTrackingDto'
application/problem+json:
schema:
$ref: '#/components/schemas/JobTrackingDto'
'404':
description: Job did not exist
x-c4-required-permissions:
- Jobs-Jobs-View Job
/api/jobs/list:
post:
tags:
- Job
summary: Find jobs based on search parameters.
operationId: ListJob
parameters:
- name: Sort.Field
in: query
description: Sort field
schema:
minLength: 1
type: string
- name: Sort.Dir
in: query
description: Sort direction
schema:
$ref: '#/components/schemas/CommonEnumSortDirectionEnum'
- name: Skip
in: query
description: Number of records to skip.
schema:
minimum: 0
type: integer
format: int32
- name: Take
in: query
description: Number of records to return (maximum)
schema:
maximum: 5000
minimum: 0
type: integer
format: int32
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JobRequestFindParameters'
application/json:
schema:
$ref: '#/components/schemas/JobRequestFindParameters'
text/json:
schema:
$ref: '#/components/schemas/JobRequestFindParameters'
application/*+json:
schema:
$ref: '#/components/schemas/JobRequestFindParameters'
responses:
'200':
description: List of jobs matching the filters
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JobDto'
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/JobDto'
x-c4-required-permissions:
- Jobs-Jobs-View Job
/api/jobs/{jobId}/status:
post:
tags:
- Job
summary: Update a job status
operationId: StatusUpdateJob
parameters:
- name: jobId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JobRequestUpdateStatus'
application/json:
schema:
$ref: '#/components/schemas/JobRequestUpdateStatus'
text/json:
schema:
$ref: '#/components/schemas/JobRequestUpdateStatus'
application/*+json:
schema:
$ref: '#/components/schemas/JobRequestUpdateStatus'
required: true
responses:
'200':
description: Success
'400':
description: Job cannot be moved to requested status
'404':
description: Job did not exist
x-c4-mutation: true
x-c4-required-permissions:
- Jobs-Jobs-Edit Job
components:
schemas:
CommonCostBreakdownDto:
required:
- calculatedOn
- componentLabor
- componentMachine
- componentMaterial
- componentOutsideProcessing
- cumulative
- cumulativeLabor
- cumulativeMachine
- cumulativeMaterial
- cumulativeOutsideProcessing
- id
- itemLabor
- itemMachine
- itemMaterial
- itemOutsideProcessing
- lines
- quantity
- shopRateMachine
- shopRateRun
- shopRateSetup
- time
- type
type: object
properties:
id:
maxLength: 36
minLength: 24
type: string
description: The id of the parent item.
type:
$ref: '#/components/schemas/ItemsAndInventoryRoutingsCostBreakdownType'
quantity:
minimum: 0
type: integer
description: Number of units.
format: int32
quantityScrapped:
minimum: 0
type: integer
description: Number of units scrapped.
format: int32
nullable: true
calculatedOn:
type: string
description: When was this cost breakdown last calculated/aggregated.
format: date-time
time:
$ref: '#/components/schemas/CommonTimeDto'
cumulative:
$ref: '#/components/schemas/CommonCostDto'
cumulativeMaterial:
$ref: '#/components/schemas/CommonCostDto'
cumulativeLabor:
$ref: '#/components/schemas/CommonCostDto'
cumulativeMachine:
$ref: '#/components/schemas/CommonCostDto'
cumulativeOutsideProcessing:
$ref: '#/components/schemas/CommonCostDto'
itemMaterial:
$ref: '#/components/schemas/CommonCostDto'
itemLabor:
$ref: '#/components/schemas/CommonCostDto'
itemMachine:
$ref: '#/components/schemas/CommonCostDto'
itemOutsideProcessing:
$ref: '#/components/schemas/CommonCostDto'
shopRateSetup:
$ref: '#/components/schemas/CommonCostDto'
shopRateRun:
$ref: '#/components/schemas/CommonCostDto'
shopRateMachine:
$ref: '#/components/schemas/CommonCostDto'
componentMaterial:
$ref: '#/components/schemas/CommonCostDto'
componentLabor:
$ref: '#/components/schemas/CommonCostDto'
componentMachine:
$ref: '#/components/schemas/CommonCostDto'
componentOutsideProcessing:
$ref: '#/components/schemas/CommonCostDto'
lines:
type: array
items:
$ref: '#/components/schemas/CommonCostBreakdownLineDto'
description: Cost breakdown line details.
additionalProperties: false
description: Cost breakdown
JobTrackingOperationReworkDto:
type: object
properties:
reasonId:
type: string
description: Identifier of the rework reason.
nullable: true
reason:
type: string
description: The rework reason.
nullable: true
notes:
type: string
description: Free-text notes captured when the rework was recorded.
nullable: true
quantityToRework:
type: integer
description: The quantity sent for rework.
format: int32
quantityScrapped:
type: integer
description: The quantity scrapped as part of the rework.
format: int32
hasScrapMaterials:
type: boolean
description: Whether scrap materials were tracked as part of the rework.
createdByUserId:
type: string
description: Identifier of the user who recorded the rework. Please reference /api/users endpoint.
nullable: true
createdUtc:
type: string
description: The datetime the rework was recorded.
format: date-time
additionalProperties: false
description: Rework details associated with a job operation.
JobTrackingItemToMakeDto:
required:
- depth
- id
- isCustom
- itemId
- quantityToMake
- status
type: object
properties:
id:
maxLength: 36
minLength: 36
type: string
description: Unique Id associated to this entity
itemId:
maxLength: 24
minLength: 24
type: string
description: 'Id of the item on which this entity is based.
Please reference /api/items endpoint.'
quantityToMake:
type: number
description: Quantity of this item produced by the associated job.
format: double
isCustom:
type: boolean
description: Denotes whether this job produces a customized version of the base item
status:
$ref: '#/components/schemas/JobItemToMakeStatusEnum'
quantityMade:
type: number
description: Quantity already produced, if the job is in progress.
format: double
nullable: true
depth:
type: integer
description: 'Structurally, identify where in the tree of building the parent item this item lies.
Example: The top-level item would have a depth of zero and it''s direct subcomponents would be 1.
This cascades down so that a subcomponent to a subcomponent would be 2... and so on.'
format: int32
routingNotes:
type: string
description: 'The routing notes (the "Routing Notes" field) captured on this job''s routing for the item.
Null when the job''s routing has no note for the item.'
nullable: true
costBreakdown:
$ref: '#/components/schemas/CommonCostBreakdownDto'
costBreakdownEstimated:
$ref: '#/components/schemas/CommonCostBreakdownDto'
itemReference:
$ref: '#/components/schemas/ItemReferenceDto'
additionalProperties: false
description: Represents an item to make on a job (for tracking purposes)
ItemReferenceDto:
required:
- id
type: object
properties:
id:
maxLength: 24
minLength: 24
type: string
description: Unique Id associated to this entity
number:
maxLength: 200
minLength: 1
type: string
description: Item number.
revision:
maxLength: 200
minLength: 1
type: string
description: Revision name.
nullable: true
name:
maxLength: 200
minLength: 1
type: string
description: Item name.
nullable: true
description:
maxLength: 2000
minLength: 0
type: string
description: Item description.
nullable: true
additionalProperties: false
description: Item reference
WorkOrderReferenceDto:
required:
- id
- name
- number
type: object
properties:
id:
maxLength: 24
minLength: 24
type: string
description: 'Identifier of work order.
Please reference api/work-orders endpoint for additional information.'
number:
minimum: 0
type: integer
description: Number
format: int32
name:
maxLength: 200
minLength: 1
type: string
description: Work order name, defaults to number unless otherwise specified.
additionalProperties: false
description: Work order reference information
JobItemToMakeOpStatusEnum:
enum:
- pending
- ready
- running
- paused
- complete
- cancelled
type: string
description: Job Item to Make Operation status
CommonEnumCostBreakdownLineTypeEnum:
enum:
- material
- labor
- setup
- machine
- outsideProcessing
- componentMaterial
- componentLabor
- componentMachine
- componentOutsideProcessing
- nestPartMaterialUsage
- nestPartMaterialScrap
- overhead
- unknown
type: string
description: Cost breakdown types
ItemsAndInventoryRoutingsCostBreakdownType:
enum:
- estimated
- inProgressJob
- completedJob
- cancelledJob
type: string
CommonEnumOperationTypeEnum:
enum:
- labor
- setup
- machine
- outsideProcessing
type: string
description: Operation type
JobTrackingDto:
required:
- id
- name
- number
- parentItemId
- priority
- quantityToMake
- status
- workOrderIds
- workOrders
type: object
properties:
id:
maxLength: 24
minLength: 24
type: string
description: Unique Id associated to this entity
number:
minimum: 0
type: integer
description: Job number
format: int32
name:
maxLength: 200
minLength: 1
type: string
description: Job name, defaults to number unless otherwise specified.
parentItemId:
maxLength: 24
minLength: 24
type: string
description: 'Unique identifier of the parent item produced by this job.
Please reference api/items endpoint.'
quantityToMake:
minimum: 0
type: number
description: Quantity of parent item produced by this job
format: double
productionDueDate:
type: string
description: Due date
format: date-time
nullable: true
earliestStartDate:
type: string
description: If set, this is the earliest date that the job should be scheduled to begin.
format: date-time
nullable: true
salesOrderId:
maxLength: 24
minLength: 24
type: string
description: 'Identifier of sales order fulfilled by this job, if applicable.
Please reference api/sales-orders endpoint.'
nullable: true
salesOrderLineItemId:
maxLength: 36
minLength: 36
type: string
description: 'Identifier of sales order line item fulfilled by this job, if applicable.
Please reference endpoints nested under api/sales-orders.'
nullable: true
createdUtc:
type: string
description: The date the job was created
format: date-time
originalScheduledStartUtc:
type: string
description: The first scheduled start time.
format: date-time
nullable: true
originalScheduledEndUtc:
type: string
description: The first scheduled end time.
format: date-time
nullable: true
scheduledStartUtc:
type: string
description: The current scheduled start time.
format: date-time
nullable: true
scheduledEndUtc:
type: string
description: The current scheduled end time.
format: date-time
nullable: true
completedOnUtc:
type: string
description: The job completion datetime.
format: date-time
nullable: true
cancelledOnUtc:
type: string
description: The job cancelled datetime.
format: date-time
nullable: true
revenue:
type: number
description: Revenue
format: double
nullable: true
notes:
type: string
description: Job level internal notes
nullable: true
workOrderIds:
type: array
items:
type: string
description: 'Identifier of work order(s) that this job is associated to, if applicable.
Please reference api/work-orders endpoint.'
workOrders:
type: array
items:
$ref: '#/components/schemas/WorkOrderReferenceDto'
description: Work order information, if applicable.
status:
$ref: '#/components/schemas/JobStatusEnum'
priority:
$ref: '#/components/schemas/JobPriorityEnum'
customFields:
type: object
additionalProperties: {}
description: Custom fields that have been defined on this entity.
nullable: true
previousOperations:
type: array
items:
$ref: '#/components/schemas/JobTrackingOperationDetailsDto'
description: The previously completed operation(s) for the job.
currentOperations:
type: array
items:
$ref: '#/components/schemas/JobTrackingOperationDetailsDto'
description: The current in progress/paused operation(s) for the job.
nextOperations:
type: array
items:
$ref: '#/components/schemas/JobTrackingOperationDetailsDto'
description: The next ready operation(s) for the job.
pendingOperations:
type: array
items:
$ref: '#/components/schemas/JobTrackingOperationDetailsDto'
description: The operations that are awaiting other operations to finish.
cancelledOperations:
type: array
items:
$ref: '#/components/schemas/JobTrackingOperationDetailsDto'
description: The operations that were cancelled.
estimatedSetupTimeInSeconds:
type: number
description: Estimated setup time (in seconds).
format: double
nullable: true
readOnly: true
estimatedRunTimeInSeconds:
type: number
description: Estimated run time (in seconds).
format: double
nullable: true
readOnly: true
estimatedLaborTimeInSeconds:
type: number
description: Estimated labor time (in seconds).
format: double
nullable: true
readOnly: true
estimatedMachineTimeInSeconds:
type: number
description: Estimated machine time (in seconds).
format: double
nullable: true
readOnly: true
elapsedSetupTimeInSeconds:
type: number
description: Elapsed setup time (in seconds).
format: double
nullable: true
elapsedRunTimeInSeconds:
type: number
description: Elapsed run time (in seconds).
format: double
nullable: true
elapsedLaborTimeInSeconds:
type: number
description: Elapsed labor time (in seconds).
format: double
nullable: true
elapsedMachineTimeInSeconds:
type: number
description: Elapsed machine time (in seconds).
format: double
nullable: true
customerName:
type: string
description: The customer that this job is associated with
nullable: true
additionalProperties: false
description: Represents a job (for tracking purposes). This is essentially a summary of the job's current state.
CommonTimeDto:
required:
- labor
- machine
- setup
type: object
properties:
labor:
minimum: 0
type: number
description: Total
format: double
machine:
minimum: 0
type: number
description: Cost per unit
format: double
setup:
minimum: 0
type: number
description: Cost per unit
format: double
additionalProperties: false
description: Time information
JobStatusEnum:
enum:
- draft
- needsReview
- approved
- engineering
- scheduled
- inProgress
- complete
- cancelled
- hold
type: string
description: Job status
JsonPatchDocument:
type: array
items:
$ref: '#/components/schemas/JsonPatchOperation'
description: Array of operations to perform
CommonCostBreakdownOperationDto:
required:
- operationId
type: object
properties:
operationId:
maxLength: 24
minLength: 24
type: string
description: Operation id. Please reference /api/operations
name:
type: string
description: Operation name.
nullable: true
timeInSeconds:
minimum: 0
type: number
description: Time in seconds.
format: double
nullable: true
readOnly: true
timeInHours:
minimum: 0
type: number
description: Time in hours
format: double
nullable: true
ratePerSecond:
minimum: 0
type: number
description: Rate per second
format: double
nullable: true
readOnly: true
ratePerHour:
minimum: 0
type: number
description: Rate per hour
format: double
nullable: true
additionalProperties: false
description: Operation information
DomainOperationsRouting_Step_SetupTimeOption:
enum:
- fixed
- perUnit
type: string
JobPriorityEnum:
enum:
- low
- moderate
- high
type: string
description: Job priority
CommonCostBreakdownLineDto:
required:
- cost
- costType
- name
type: object
properties:
costType:
$ref: '#/components/schemas/CommonEnumCostBreakdownLineTypeEnum'
operationType:
$ref: '#/components/schemas/CommonEnumOperationTypeEnum'
name:
minLength: 1
type: string
description: Decription of this line.
cost:
minimum: 0
type: number
description: Cost.
format: double
quantity:
minimum: 0
type: number
description: Quantity (if applicable)
format: double
nullable: true
itemId:
maxLength: 24
minLength: 24
type: string
description: Id of the item that was picked. Please reference /api/items endpoint.
nullable: true
itemName:
type: string
description: The name of the item that was picked.
nullable: true
accountingCodeId:
maxLength: 24
minLength: 24
type: string
description: Accounting code affected. Please reference /api/accounting-codes endpoint.
nullable: true
operationInformation:
$ref: '#/components/schemas/CommonCostBreakdownOperationDto'
additionalProperties: false
description: Cost breakdown line information.
CreatedResponseDto:
required:
- id
type: object
properties:
id:
minLength: 1
type: string
description: The id of the created record
additionalProperties: false
description: Response for a created record
JobTrackingOperationDetailsDto:
required:
- itemToMake
- operation
type: object
properties:
itemToMake:
$ref: '#/components/schemas/JobTrackingItemToMakeDto'
operation:
$ref: '#/components/schemas/JobTrackingOperationDto'
additionalProperties: false
description: Represents a job operation and the item affected (for tracking purposes).
JobRequestUpdateStatus:
required:
- status
type: object
properties:
status:
$ref: '#/components/schemas/JobStatusEnum'
createPOs:
type: boolean
description: 'Create Purchase Orders for the Job. Required for the following statuses: Engineering, Approved'
nullable: true
isInitialDataImport:
type: boolean
description: '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'
nullable: true
additionalProperties: false
description: Update a job status.
JsonPatchOperation:
type: object
properties:
op:
type: string
value:
type: string
path:
type: string
CommonCostDto:
required:
- perUnit
- total
type: object
properties:
total:
minimum: 0
type: number
description: Total
format: double
perUnit:
minimum: 0
type: number
description: Cost per unit
format: double
additionalProperties: false
description: Cost information
JobRequestFindParameters:
type: object
properties:
jobIds:
maxItems: 500
minItems: 1
type: array
items:
type: string
description: Filter to jobs whose ids are in the list
nullable: true
numbers:
maxItems: 500
minItems: 1
type: array
items:
type: integer
format: int32
description: Filter jobs to only given numbers
nullable: true
jobNames:
maxItems: 500
minItems: 1
type: array
items:
type: string
description: Filter jobs to only given names
nullable: true
status:
$ref: '#/components/schemas/JobStatusEnum'
statuses:
type: array
items:
$ref: '#/components/schemas/JobStatusEnum'
description: Filter jobs to match the given statuses
nullable: true
parentItemId:
type: string
description: Filter jobs based on the id of the parent item they produce
nullable: true
hasIncompleteOperations:
type: boolean
description: "Filters jobs to have those that have at least 1 incomplete operation.\nNote that this will filter out jobs that haven't been approved yet because they technically have \nno operations on them until approved."
nullable: true
salesOrderId:
maxLength: 24
minLength: 24
type: string
description: 'Filters for jobs that are for this sales order id.
Please reference /api/sales-orders endpoint.'
nullable: true
createdBeforeUtc:
type: string
description: Filters jobs created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.
format: date-time
nullable: true
createdAfterUtc:
type: string
description: Filters jobs created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.
format: date-time
nullable: true
modifiedBeforeUtc:
type: string
description: Filters jobs modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.
format: date-time
nullable: true
modifiedAfterUtc:
type: string
description: '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.'
format: date-time
nullable: true
additionalProperties: false
description: Parameters used for searching/finding jobs.
JobUpdateDto:
type: object
properties:
name:
type: string
description: The name of the job
nullable: true
priority:
$ref: '#/components/schemas/JobPriorityEnum'
quantityToMake:
type: number
description: The quantity the job should make
format: double
nullable: true
productionDueDate:
type: string
description: The production due date
format: date-time
nullable: true
earliestStartDate:
type: string
description: If set, this
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fulcrumpro/refs/heads/main/openapi/fulcrumpro-job-api-openapi.yml