openapi: 3.2.0 info: title: ERP API v2.1 Timecard Line API description: Provides a common API surface for accessing ECI ERP products. contact: name: ECI Manufacturing Division Integration Team url: https://www.ecisolutions.com/support/ version: 3.5.585+b1e45fd230 servers: - url: https://api-erp.integrations.ecimanufacturing.com:443 description: Production security: - Bearer: [] tags: - name: TimecardLine paths: /api/v2.1/timecard-lines: post: tags: - TimecardLine summary: Create a new Timecard Line in the ERP system description: '## Supported ERPs - JobBOSS² - M1' requestBody: description: '' content: application/json: schema: $ref: '#/components/schemas/TimecardLineDetailCreateModel' text/json: schema: $ref: '#/components/schemas/TimecardLineDetailCreateModel' application/*+json: schema: $ref: '#/components/schemas/TimecardLineDetailCreateModel' responses: '201': description: Created operationId: postApiV21TimecardLines x-operation-id-source: derived get: tags: - TimecardLine summary: Get a list of Timecard Lines from the ERP system that match the given filters description: 'Gets a list of TimecardLine. ## Supported ERPs - M1 - JobBOSS² - Macola ## Resource Features Feature |Supported |Notes ------------|------------|------------ Filter Expressions|**Yes**| Sort Expressions|**Yes** Field Selection|**Yes** Pagination|**Yes** UniqueID|uniqueID| ## Features by Field Field |Filterable |Sortable |Supported ERPs ------------|------------|------------|------------ timecardID|Yes|Yes|M1, JobBOSS², Macola timecardLine|Yes|Yes|M1, JobBOSS², Macola jobID|Yes|Yes|M1, JobBOSS², Macola jobAssembly|Yes|Yes|M1, JobBOSS², Macola jobOperation|Yes|Yes|M1, JobBOSS², Macola workCenterID|Yes|Yes|M1, JobBOSS², Macola processID|Yes|Yes|M1, JobBOSS², Macola status|Yes|Yes|M1, JobBOSS², Macola timecardType|Yes|Yes|M1, JobBOSS², Macola goodQty|Yes|Yes|M1, JobBOSS², Macola scrapQty|Yes|Yes|M1, JobBOSS², Macola reworkQty|Yes|Yes|M1, JobBOSS², Macola rejectQty|Yes|Yes|M1, JobBOSS², Macola startTime|Yes|Yes|M1, JobBOSS², Macola endTime|Yes|Yes|M1, JobBOSS², Macola machineHours|Yes|Yes|M1, JobBOSS², Macola laborHours|Yes|Yes|M1, JobBOSS², Macola employeeID|Yes|Yes|JobBOSS² timecardDate|Yes|Yes|JobBOSS² uniqueID|Yes|Yes|M1, JobBOSS², Macola rowVersion|Yes|Yes|M1, JobBOSS², Macola' 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 sort expressions. schema: type: string - name: take in: query description: Limit the number of results being returned schema: minimum: 0 type: integer - name: skip in: query description: The number of results to skip. Combine with 'take' to fetch records in pages schema: minimum: 0 type: integer - name: count in: query description: 'Data and count response behavior ' schema: maximum: 2 minimum: 0 type: integer - name: filters in: query description: See Filter Expressions for query string syntax. The Test UI and any generated code tool may expose filter parameters as a dictionary of name/value pairs, but if creating a raw HTTP request, they must be provided on the querystring as defined in the Filter Expression section. style: form schema: type: object additionalProperties: type: string examples: Empty: description: No filters applied 'Example #1': description: A dictionary of name/value pairs that will be serialized as querystring parameters in the format ```name[operator]=value``` value: timecardID[eq]: abc123 timecardLine[eq]: abc123 jobID[eq]: abc123 jobAssembly[eq]: abc123 jobOperation[gte]: 123 workCenterID[eq]: abc123 processID[eq]: abc123 status[eq]: abc123 timecardType[eq]: abc123 goodQty[gte]: 123 scrapQty[gte]: 123 reworkQty[gte]: 123 rejectQty[gte]: 123 startTime[gte]: '2020-09-25T04:03:00.0000000' endTime[gte]: '2020-09-25T04:03:00.0000000' machineHours[gte]: 123 laborHours[gte]: 123 employeeID[gte]: 123 timecardDate[gte]: '2020-09-25T04:03:00.0000000' uniqueID[eq]: cc90686b-399e-4094-b431-fa462f84b0a8 rowVersion[gte]: 123 - name: expand in: query description: '### Supported Expansions An expansion expression containing a comma separater list of relationships to expand. Name |Value |Description ------------|------------|----------- workCenters|WorkCenters[]|This relationship is obsolete and will be removed in a future release. Use ''workCenter'' instead workCenter|WorkCenters|The workcenter associated with this line. timecards|Timecards[]|This relationship is obsolete and will be removed in a future release. Use ''timecard'' instead timecard|Timecards|The timecard record associated with this line. jobs|Jobs|This relationship is obsolete and will be removed in a future release. Use ''job'' instead job|Jobs|The Job associated with this line. processes|Processes|This relationship is obsolete and will be removed in a future release. Use ''process'' instead process|Processes|The Process associated with this line. jobOperations|JobOperations|This relationship is obsolete and will be removed in a future release. Use ''jobOperation'' instead jobOperationx|JobOperations|The Job Operation associated with this line. salesOrderDeliveries|SalesOrderDeliveries[]| salesOrderJobs|SalesOrderJobs|This relationship is obsolete and will be removed in a future release. Use ''salesOrderJob'' instead salesOrderJob|SalesOrderJobs|The Sales Order Job associated with this line. ' schema: type: string - name: convertToUTC in: query description: Convert suppported date/time values to UTC before returning the data. schema: type: boolean responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/TimecardLineListResponse' application/json: schema: $ref: '#/components/schemas/TimecardLineListResponse' text/json: schema: $ref: '#/components/schemas/TimecardLineListResponse' operationId: getApiV21TimecardLines x-operation-id-source: derived /api/v2.1/timecard-lines/{id}: get: tags: - TimecardLine summary: Get a TimecardLine from the ERP system that match the given unique ID description: 'Gets a TimecardLine by unique ID. ## Supported ERPs - M1 - JobBOSS² - Macola ## Features by Field Field |Supported ERPs ------------|------------ timecardID||M1, JobBOSS², Macola timecardLine||M1, JobBOSS², Macola jobID||M1, JobBOSS², Macola jobAssembly||M1, JobBOSS², Macola jobOperation||M1, JobBOSS², Macola workCenterID||M1, JobBOSS², Macola processID||M1, JobBOSS², Macola status||M1, JobBOSS², Macola timecardType||M1, JobBOSS², Macola goodQty||M1, JobBOSS², Macola scrapQty||M1, JobBOSS², Macola reworkQty||M1, JobBOSS², Macola rejectQty||M1, JobBOSS², Macola startTime||M1, JobBOSS², Macola endTime||M1, JobBOSS², Macola machineHours||M1, JobBOSS², Macola laborHours||M1, JobBOSS², Macola employeeID||JobBOSS² timecardDate||JobBOSS² uniqueID||M1, JobBOSS², Macola rowVersion||M1, JobBOSS², Macola' parameters: - name: id in: path description: The ID of the TimecardLine required: true schema: type: string responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/TimecardLine' application/json: schema: $ref: '#/components/schemas/TimecardLine' text/json: schema: $ref: '#/components/schemas/TimecardLine' operationId: getApiV21TimecardLinesById x-operation-id-source: derived patch: tags: - TimecardLine summary: Update an existing Timecard Line in the ERP system parameters: - name: id in: path description: The ID of the TimecardLine required: true schema: type: string requestBody: description: '' content: application/json: schema: $ref: '#/components/schemas/TimecardLineUpdateModel' text/json: schema: $ref: '#/components/schemas/TimecardLineUpdateModel' application/*+json: schema: $ref: '#/components/schemas/TimecardLineUpdateModel' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/TimecardLine' application/json: schema: $ref: '#/components/schemas/TimecardLine' text/json: schema: $ref: '#/components/schemas/TimecardLine' operationId: patchApiV21TimecardLinesById x-operation-id-source: derived components: schemas: Job: title: Job type: object properties: jobID: type: string customerID: type: string partID: type: string partRevisionID: type: string orderQty: type: number format: double prodQty: type: number format: double schedStartDate: type: string format: date-time schedEndDate: type: string format: date-time estLeadTime: type: number format: double actStartDate: type: string format: date-time actEndDate: type: string format: date-time dueDate: type: string format: date-time status: type: string uniqueID: type: string rowVersion: type: integer format: int64 jobCost: type: number format: double jobCostForeign: type: number format: double plantID: type: string jobDate: type: string format: date-time partWarehouseID: type: string partBinID: type: string partShortDesc: type: string inventoryQty: type: number format: double isPlanningComplete: type: boolean isScheduleComplete: type: boolean isReleasedToFloor: type: boolean isOnHold: type: boolean completedDate: type: string format: date-time quantityCompleted: type: number format: double quantityShipped: type: number format: double quantityRcvdToInventory: type: number format: double projectID: type: string projectAreaID: type: string isClosed: type: boolean closedDate: type: string format: date-time jobPriorityID: type: string unitOfMeasure: type: string plannerEmployeeID: type: string parentJobID: type: string shortDesc: type: string childJobID: type: string jobType: type: string jobOperations: type: array items: $ref: '#/components/schemas/JobOperation' JobOperation: title: JobOperation type: object properties: jobID: type: string jobAssembly: type: string jobOperationSeq: type: integer format: int32 status: type: string workCenterID: type: string processID: type: string shortDesc: type: string longDescText: type: string longDescFormatted: type: string outsideOperation: type: string partID: type: string partRevisionID: type: string schedStartDate: type: string format: date-time schedEndDate: type: string format: date-time actStartDate: type: string format: date-time actEndDate: type: string format: date-time estSetupHours: type: number format: double estProdHours: type: number format: double estQueueHours: type: number format: double estMoveHours: type: number format: double estQAHours: type: number format: double actSetupHours: type: number format: double actualProdHours: type: number format: double actQAHours: type: number format: double vendorID: type: string estSetupTimeValue: type: number format: double estSetupTimeUnit: type: string estProdTimeValue: type: number format: double estProdTimeUnit: type: string uniqueID: type: string rowVersion: type: integer format: int64 operationQty: type: number format: double quantityComplete: type: number format: double isSetupComplete: type: boolean plantID: type: string purchaseOrderID: type: string supplierOrganizationID: type: string purchaseLocationID: type: string RFQID: type: string defaultEmployeeID: type: string defaultEmployeeID2: type: string defaultEmployeeID3: type: string isUnattended: type: boolean jobType: type: string supplierLeadTime: type: integer format: int32 jobIsClosed: type: boolean jobClosedDate: type: string format: date-time WorkCenter: title: WorkCenter type: object properties: workCenterID: type: string shortDesc: type: string deptID: type: string overHeadRate: type: string quoteRate: type: string processID: type: string parentWorkCenterID: type: string shiftID: type: string uniqueID: type: string rowVersion: type: integer format: int64 laborRate: type: string departments: type: array items: $ref: '#/components/schemas/Department' shifts: type: array items: $ref: '#/components/schemas/Shift' Employee: title: Employee type: object properties: employeeID: type: string firstName: type: string lastName: type: string title: type: string supervisorEmployeeID: type: string payRate: type: number format: double deptID: type: string shiftID: type: string isActive: type: boolean uniqueID: type: string rowVersion: type: integer format: int64 Department: title: Department type: object properties: deptID: type: string shortDesc: type: string uniqueID: type: string rowVersion: type: integer format: int64 Shift: title: Shift type: object properties: shiftID: type: number format: float shortDesc: type: string inactiveDate: type: string format: date-time uniqueID: type: string rowVersion: type: integer format: int64 shiftDays: type: array items: $ref: '#/components/schemas/ShiftDay' SalesOrderDelivery: title: SalesOrderDelivery type: object properties: salesOrderID: type: string orderLine: type: integer orderLineDelivery: type: string promisedDate: type: string format: date-time promisedQty: type: number format: double shippedDate: type: string format: date-time shippedQty: type: number format: double uniqueID: type: string rowVersion: type: integer format: int64 deliveryTypeCode: type: string salesOrderType: type: string salesOrderJobs: type: array items: $ref: '#/components/schemas/SalesOrderJob' TimecardLine: title: TimecardLine type: object properties: timecardID: type: string timecardLine: type: string jobID: type: string jobAssembly: type: string jobOperation: type: integer format: int32 workCenterID: type: string processID: type: string status: type: string timecardType: type: string goodQty: type: number format: double scrapQty: type: number format: double reworkQty: type: number format: double rejectQty: type: number format: double startTime: type: string format: date-time endTime: type: string format: date-time machineHours: type: number format: double laborHours: type: number format: double employeeID: type: integer format: int32 timecardDate: type: string format: date-time uniqueID: type: string rowVersion: type: integer format: int64 workCenters: type: array items: $ref: '#/components/schemas/WorkCenter' workCenter: $ref: '#/components/schemas/WorkCenter' timecards: type: array items: $ref: '#/components/schemas/Timecard' timecard: $ref: '#/components/schemas/Timecard' jobs: $ref: '#/components/schemas/Job' job: $ref: '#/components/schemas/Job' processes: $ref: '#/components/schemas/Process' process: $ref: '#/components/schemas/Process' jobOperations: $ref: '#/components/schemas/JobOperation' jobOperationx: $ref: '#/components/schemas/JobOperation' salesOrderDeliveries: type: array items: $ref: '#/components/schemas/SalesOrderDelivery' salesOrderJobs: $ref: '#/components/schemas/SalesOrderJob' salesOrderJob: $ref: '#/components/schemas/SalesOrderJob' SalesOrderJob: title: SalesOrderJob type: object properties: salesOrderID: type: string orderLine: type: integer orderLineDelivery: type: string jobID: type: string orderJobSeq: type: integer format: int32 uniqueID: type: string rowVersion: type: integer format: int64 ShiftDay: title: ShiftDay type: object properties: shiftID: type: number format: float shiftDay: type: number format: float startTime: type: string endTime: type: string uniqueID: type: string rowVersion: type: integer format: int64 TimecardLineUpdateModel: type: object properties: goodQty: type: - number - 'null' format: double scrapQty: type: - number - 'null' format: double additionalProperties: false TimecardLineListResponse: type: object properties: data: type: - array - 'null' items: $ref: '#/components/schemas/TimecardLine' readOnly: true resultCount: type: integer format: int32 additionalProperties: false TimecardLineDetailCreateModel: required: - jobID type: object properties: jobID: minLength: 1 type: string jobOperationSeq: type: - integer - 'null' format: int32 elapsedTime: type: - number - 'null' format: double setupTime: type: - number - 'null' format: double machineHours: type: - number - 'null' description: Not used for JobBOSS² format: double laborHours: type: - number - 'null' description: Not used for JobBOSS² format: double processID: type: - string - 'null' workCenterID: type: - string - 'null' goodQty: type: - number - 'null' format: double scrapQty: type: - number - 'null' format: double comments: type: - string - 'null' startTime: type: - string - 'null' format: date-time endTime: type: - string - 'null' format: date-time jobOperationID: type: - string - 'null' timecardID: type: - string - 'null' employeeID: type: - string - 'null' timecardDate: type: - string - 'null' format: date additionalProperties: false Timecard: title: Timecard type: object properties: timecardID: type: string employeeID: type: string shiftID: type: number format: float timecardDate: type: string format: date-time uniqueID: type: string rowVersion: type: integer format: int64 timecardlines: type: array items: $ref: '#/components/schemas/TimecardLine' employees: type: array items: $ref: '#/components/schemas/Employee' Process: title: Process type: object properties: processID: type: string shortDesc: type: string setupRate: type: string productionRate: type: string uniqueID: type: string rowVersion: type: integer format: int64 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