openapi: 3.2.0
info:
title: JobBOSS² Public Routings API
description: Provides a common API surface for accessing ECI ERP JobBOSS².
version: v1
servers:
- url: https://api-jb2.integrations.ecimanufacturing.com:443
description: API Host
security:
- Bearer: []
tags:
- name: Routings
paths:
/api/v1/estimates/{partNumber}/routings/{stepNumber}:
get:
tags:
- Routings
summary: Gets a Routing by estimate's part number and routing's step number
description: 'By default a Routing response will include only the fields: partNumber, stepNumber, workOrVendor, workCenter, vendorCode, operatorCode, description, setupTime, timeUnit, cycleTime, cycleUnit, machineRun, teamSize, scrapPercent, laborAccount, setupRate, cycleRate, burdenRate, laborRate, isUnattendedOperation, leadTime, markupPercent, isCertificationRequired, GLAccount, cost1, unit1, setup1, setupPrice, cyclePrice, total, estimQuantity, actualPiecesGood, actualPiecesScrapped, ignoreVendorMinimum, numberMachineForJob, uniqueID, lastModDate. You may specify the exact fields to return using the fields parameter.'
parameters:
- name: partNumber
in: path
required: true
schema:
type: string
- name: stepNumber
in: path
required: true
schema:
type: string
- name: fields
in: query
description: A comma separated list of fields to include in the result.
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/RoutingSuccessResponse'
example:
Data:
actualPiecesGood: 0
actualPiecesScrapped: 0
burdenRate: 0
cost1: 0
cost2: 0
cost3: 0
cost4: 0
cost5: 0
cost6: 0
cost7: 0
cost8: 0
cyclePrice: 0
cycleRate: 0
cycleTime: 0
cycleUnit: string
description: string
enteredDate: '2026-09-06T17:13:12.0000000+00:00'
estimQuantity: 0
GLAccount: string
ignoreVendorMinimum: false
isCertificationRequired: false
isUnattendedOperation: false
laborAccount: string
laborRate: 0
lastModDate: '2026-09-06T17:13:12.0000000+00:00'
lastModUser: string
leadTime: 0
machineRun: 0
markupPercent: 0
numberMachineForJob: 0
operatorCode: string
partNumber: string
percentEfficient: 0
revisedDate: '2026-09-06T17:13:12.0000000+00:00'
scrapPercent: 0
setup1: 0
setup2: 0
setup3: 0
setup4: 0
setup5: 0
setup6: 0
setup7: 0
setup8: 0
setupPrice: 0
setupRate: 0
setupTime: 0
stepNumber: 0
teamSize: 0
timeUnit: string
total: 0
uniqueID: 0
unit1: string
unit2: string
unit3: string
unit4: string
unit5: string
unit6: string
unit7: string
unit8: string
vendorCode: string
workCenter: string
workOrVendor: string
operationId: getApiV1EstimatesByPartNumberRoutingsByStepNumber
x-operation-id-source: derived
/api/v1/routings:
get:
tags:
- Routings
summary: Gets a list of Routings
description: 'By default a routing response will include only the fields: partNumber, stepNumber, workOrVendor, workCenter, vendorCode, operatorCode, description, setupTime, timeUnit, cycleTime, cycleUnit, machineRun, teamSize, scrapPercent, laborAccount, setupRate, cycleRate, burdenRate, laborRate, isUnattendedOperation, leadTime, markupPercent, isCertificationRequired, GLAccount, cost1, unit1, setup1, setupPrice, cyclePrice, total, estimQuantity, actualPiecesGood, actualPiecesScrapped, ignoreVendorMinimum, numberMachineForJob, uniqueID, lastModDate. You may specify the exact fields to return using the fields parameter.'
parameters:
- name: fields
in: query
description: A comma separated list of fields to include in the result.
schema:
type: string
- name: sort
in: query
description: A comma separated list of field to sort by. See the Sort Expressions section for more information.
schema:
type: string
- name: filters
in: query
description: Filters must be provided as query string parameters as defined in the Filter Expressions section.
schema:
type: object
additionalProperties:
type: string
examples:
No filters: {}
Filter by Part Number:
value:
partNumber: R-9002-007
- name: skip
in: query
description: The number of records at the start of the result set to skip over.
schema:
type: string
- name: take
in: query
description: The number of records to retrieve.
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/RoutingListSuccessResponse'
example:
Data:
- actualPiecesGood: 0
actualPiecesScrapped: 0
burdenRate: 0
cost1: 0
cost2: 0
cost3: 0
cost4: 0
cost5: 0
cost6: 0
cost7: 0
cost8: 0
cyclePrice: 0
cycleRate: 0
cycleTime: 0
cycleUnit: string
description: string
enteredDate: '2026-09-06T17:13:12.0000000+00:00'
estimQuantity: 0
GLAccount: string
ignoreVendorMinimum: false
isCertificationRequired: false
isUnattendedOperation: false
laborAccount: string
laborRate: 0
lastModDate: '2026-09-06T17:13:12.0000000+00:00'
lastModUser: string
leadTime: 0
machineRun: 0
markupPercent: 0
numberMachineForJob: 0
operatorCode: string
partNumber: string
percentEfficient: 0
revisedDate: '2026-09-06T17:13:12.0000000+00:00'
scrapPercent: 0
setup1: 0
setup2: 0
setup3: 0
setup4: 0
setup5: 0
setup6: 0
setup7: 0
setup8: 0
setupPrice: 0
setupRate: 0
setupTime: 0
stepNumber: 0
teamSize: 0
timeUnit: string
total: 0
uniqueID: 0
unit1: string
unit2: string
unit3: string
unit4: string
unit5: string
unit6: string
unit7: string
unit8: string
vendorCode: string
workCenter: string
workOrVendor: string
operationId: getApiV1Routings
x-operation-id-source: derived
components:
schemas:
Routing:
type: object
properties:
actualPiecesGood:
type:
- integer
- 'null'
format: int32
readOnly: true
actualPiecesScrapped:
type:
- integer
- 'null'
format: int32
readOnly: true
burdenRate:
type:
- number
- 'null'
format: double
readOnly: true
cost1:
type:
- number
- 'null'
format: double
readOnly: true
cost2:
type:
- number
- 'null'
format: double
readOnly: true
cost3:
type:
- number
- 'null'
format: double
readOnly: true
cost4:
type:
- number
- 'null'
format: double
readOnly: true
cost5:
type:
- number
- 'null'
format: double
readOnly: true
cost6:
type:
- number
- 'null'
format: double
readOnly: true
cost7:
type:
- number
- 'null'
format: double
readOnly: true
cost8:
type:
- number
- 'null'
format: double
readOnly: true
cyclePrice:
type:
- number
- 'null'
format: double
readOnly: true
cycleRate:
type:
- number
- 'null'
format: double
readOnly: true
cycleTime:
type:
- number
- 'null'
format: double
readOnly: true
cycleUnit:
type:
- string
- 'null'
readOnly: true
description:
type:
- string
- 'null'
readOnly: true
enteredDate:
type:
- string
- 'null'
format: date-time
readOnly: true
estimQuantity:
type:
- integer
- 'null'
format: int32
readOnly: true
GLAccount:
type:
- string
- 'null'
readOnly: true
ignoreVendorMinimum:
type: boolean
readOnly: true
isCertificationRequired:
type: boolean
readOnly: true
isUnattendedOperation:
type: boolean
readOnly: true
laborAccount:
type:
- string
- 'null'
readOnly: true
laborRate:
type:
- number
- 'null'
format: double
readOnly: true
lastModDate:
type:
- string
- 'null'
format: date-time
readOnly: true
lastModUser:
type:
- string
- 'null'
readOnly: true
leadTime:
type:
- integer
- 'null'
format: int32
readOnly: true
machineRun:
type:
- integer
- 'null'
format: int32
readOnly: true
markupPercent:
type:
- number
- 'null'
format: double
readOnly: true
numberMachineForJob:
type:
- number
- 'null'
format: double
readOnly: true
operatorCode:
type:
- string
- 'null'
readOnly: true
partNumber:
type:
- string
- 'null'
readOnly: true
percentEfficient:
type:
- number
- 'null'
format: double
readOnly: true
revisedDate:
type:
- string
- 'null'
format: date-time
readOnly: true
scrapPercent:
type:
- number
- 'null'
format: double
readOnly: true
setup1:
type:
- number
- 'null'
format: double
readOnly: true
setup2:
type:
- number
- 'null'
format: double
readOnly: true
setup3:
type:
- number
- 'null'
format: double
readOnly: true
setup4:
type:
- number
- 'null'
format: double
readOnly: true
setup5:
type:
- number
- 'null'
format: double
readOnly: true
setup6:
type:
- number
- 'null'
format: double
readOnly: true
setup7:
type:
- number
- 'null'
format: double
readOnly: true
setup8:
type:
- number
- 'null'
format: double
readOnly: true
setupPrice:
type:
- number
- 'null'
format: double
readOnly: true
setupRate:
type:
- number
- 'null'
format: double
readOnly: true
setupTime:
type:
- number
- 'null'
format: double
readOnly: true
stepNumber:
type:
- integer
- 'null'
format: int32
readOnly: true
teamSize:
type:
- integer
- 'null'
format: int32
readOnly: true
timeUnit:
type:
- string
- 'null'
readOnly: true
total:
type:
- number
- 'null'
format: double
readOnly: true
uniqueID:
type: integer
format: int32
readOnly: true
unit1:
type:
- string
- 'null'
readOnly: true
unit2:
type:
- string
- 'null'
readOnly: true
unit3:
type:
- string
- 'null'
readOnly: true
unit4:
type:
- string
- 'null'
readOnly: true
unit5:
type:
- string
- 'null'
readOnly: true
unit6:
type:
- string
- 'null'
readOnly: true
unit7:
type:
- string
- 'null'
readOnly: true
unit8:
type:
- string
- 'null'
readOnly: true
vendorCode:
type:
- string
- 'null'
readOnly: true
workCenter:
type:
- string
- 'null'
readOnly: true
workOrVendor:
type:
- string
- 'null'
readOnly: true
additionalProperties: false
RoutingListSuccessResponse:
type: object
properties:
Data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Routing'
additionalProperties: false
RoutingSuccessResponse:
type: object
properties:
Data:
$ref: '#/components/schemas/Routing'
additionalProperties: false
securitySchemes:
Bearer:
type: oauth2
description: OAuth 2.0 Client Credentials Flow with API Users issued from Integration Engine Management Console
flows:
clientCredentials:
tokenUrl: https://api-user.integrations.ecimanufacturing.com/oauth2/api-user/token
scopes:
openid: openid