Data Publisher Schemas
When data is changed in GPO, the changes are published to Data Publisher. The data will be published in the form of JSON objects that adhere to the following schemas:
The schemas can also be downloaded in the DataPublisher UI.
Business Unit Version 1.0.0
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "GPO internal business unit ID"
},
"tenantId": {
"type": "string",
"description": "Tenant ID associated with this business unit"
},
"operationType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Operation type 0 - unknown, 1 - create, 2 - modify, 3 - delete"
},
"name": {
"type": [
"string",
"null"
],
"description": "Name of business unit"
},
"isDisabled": {
"type": "boolean",
"description": "Flag indicating if business unit is disabled, this means no KPIs are calculated for this business unit and it will not appear in the hierarchy."
}
},
"required": [
"id",
"tenantId",
"operationType",
"name",
"isDisabled"
]
}
Line Version 1.0.0
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "GPO internal line ID"
},
"tenantId": {
"type": "string",
"description": "Tenant ID associated with this line"
},
"operationType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Operation type 0 - unknown, 1 - create, 2 - modify, 3 - delete"
},
"name": {
"type": [
"string",
"null"
],
"description": "Name of line"
},
"plantId": {
"type": "string",
"description": "ID of plant associated with this line"
},
"productId": {
"type": [
"string",
"null"
],
"description": "ID of product associated with this line"
},
"isDisabled": {
"type": "boolean",
"description": "Flag indicating if line is disabled, this means no KPIs are calculated for this line, no data will be replicated for it, and it will not appear in the hierarchy."
}
},
"required": [
"id",
"tenantId",
"operationType",
"name",
"plantId",
"productId",
"isDisabled"
]
}
Link Version 1.0.0
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "GPO internal link ID"
},
"tenantId": {
"type": "string",
"description": "Tenant ID associated with this link"
},
"operationType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Operation type 0 - unknown, 1 - create, 2 - modify, 3 - delete"
},
"elementId": {
"type": "string",
"name": "ID of the element associated with this link. This is a * if this is a generic link."
},
"elementTypeId": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5,
6
],
"description": "The type of the element for this link: 0 - world, 1 - continent, 2 - country, 3 - plant, 4 - businessunit, 5 - product, 6 - line"
},
"linkUrl": {
"type": [
"string",
"null"
],
"description": "URL of the link."
},
"linkDescription": {
"type": [
"string",
"null"
],
"description": "Description of the link."
}
},
"required": [
"id",
"tenantId",
"operationType",
"elementId",
"elementTypeId",
"linkUrl",
"linkDescription"
]
}
Plant Version 1.0.0
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "GPO internal plant ID"
},
"tenantId": {
"type": "string",
"description": "Tenant ID associated with this plant"
},
"operationType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Operation type 0 - unknown, 1 - create, 2 - modify, 3 - delete"
},
"name": {
"type": [
"string",
"null"
],
"description": "Name of the plant"
},
"latitude": {
"type": "number",
"description": "Latitude of this plant"
},
"longitude": {
"type": "number",
"description": "Longitude of this plant"
},
"countryCode": {
"type": "string",
"description": "Country code of this plant"
}
},
"required": [
"id",
"tenantId",
"operationType",
"name",
"latitude",
"longitude",
"countryCode"
]
}
Product Version 1.0.0
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "GPO internal product ID"
},
"tenantId": {
"type": "string",
"description": "Tenant ID associated with this link"
},
"operationType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Operation type 0 - unknown, 1 - create, 2 - modify, 3 - delete"
},
"name": {
"type": [
"string",
"null"
],
"description": "Name of this product"
},
"businessUnitId": {
"type": "string",
"description": "ID of business unit associated with this line"
},
"isDisabled": {
"type": "boolean",
"description": "Flag indicating if line is disabled, this means no KPIs are calculated for this line, no data will be replicated for it, and it will not appear in the hierarchy."
}
},
"required": [
"tenantId",
"id",
"operationType",
"name",
"businessUnitId",
"isDisabled"
]
}
Replicated Shift Version 1.0.0
{
"type": "object",
"properties": {
"aggData": {
"type": "object",
"description": "The aggregated data",
"properties": {
"changeType": {
"type": [
"integer",
"null"
],
"description": "0 - shift data row is inserted; 2 shift data row is deleted"
},
"changeTime": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the change occured"
},
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"validFrom": {
"type": "string",
"format": "date-time",
"description": "Specifies the start of the evaluation time period"
},
"validTo": {
"type": "string",
"format": "date-time",
"description": "Specifies the end of the evaluation time period"
},
"locationId": {
"type": "string",
"description": "The OPCON location ID for line"
},
"locationName": {
"type": "string",
"description": "Name of the line"
},
"sortingKey": {
"type": "integer",
"description": "Order value - should be always the same for a line"
},
"shiftId": {
"type": "integer",
"description": "Shift number (0=early shift, 1=late shift, 2=night shift)"
},
"workingDay": {
"type": "string",
"format": "date-time",
"description": "Working day; begins with the first shift of the day"
},
"countPartProcessedFirst": {
"type": "integer",
"description": "Total number of processes at the first station"
},
"countIo": {
"type": "integer",
"description": "Total number of OK processes at the last station"
},
"countNio": {
"type": "integer",
"description": "Total number of NOK processes (ResultState=2)"
},
"countPartProcessed": {
"type": "integer",
"description": "Total number of processes at the last station"
},
"countOthers": {
"type": "integer",
"description": "Number of processes with ResultState>3 and ResultState!=12"
},
"countScrap": {
"type": "integer",
"description": "Number of scrap processes (ResultState=12)"
},
"countAbort": {
"type": "integer",
"description": "Number of processes in which processing was canceled (ResultState=3)"
},
"fpyIo": {
"type": "integer",
"description": "Number of OK processes at the last station without rework"
},
"fpyAll": {
"type": "integer",
"description": "Number of processes at the last station after the first pass (of the last station)"
},
"countTargetOee": {
"type": [
"number",
"null"
],
"description": "Number of processes to achieve the target OEE"
},
"countTargetOee100": {
"type": [
"number",
"null"
],
"description": "Number of processes to achieve 100% OEE"
},
"timeTargetOee100": {
"type": [
"number",
"null"
],
"description": "Production period - planned downtimes (in seconds)"
},
"countTargetNuist100": {
"type": [
"number",
"null"
],
"description": "Production period / target cycle time"
},
"timeTargetNuist100": {
"type": [
"number",
"null"
],
"description": "Production period (reserved for calculation of U)"
},
"countTargetNurel100": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes from shift model) / target cycle time"
},
"timeTargetNurel100": {
"type": [
"number",
"null"
],
"description": "Production period - planned downtimes from shift model"
},
"aggregatedTimestamp": {
"type": "string",
"format": "date-time",
"description": "Time of data aggregation"
},
"countPlan": {
"type": [
"number",
"null"
],
"description": "Planned parts count"
},
"timePartProcessedFirst": {
"type": [
"number",
"null"
],
"description": "CountPartProcessedFirst * target cycle time"
},
"timeIo": {
"type": [
"number",
"null"
],
"description": "OK processes in the time interval (including for calculation of the OEE in accordance with the standard)"
},
"timeNio": {
"type": [
"number",
"null"
],
"description": "NOK processes in the time interval (ResultState=2)"
},
"timePartProcessed": {
"type": [
"number",
"null"
],
"description": "Total number of parts at last station * target cycle time"
},
"timeOthers": {
"type": [
"number",
"null"
],
"description": "Number of parts with ResultState>3 and ResultState!=12 * target cycle time"
},
"timeScrap": {
"type": [
"number",
"null"
],
"description": "Scrap * target cycle time"
},
"timeAbort": {
"type": [
"number",
"null"
],
"description": "Abort processes * target cycle time"
},
"timeTargetOee": {
"type": [
"number",
"null"
],
"description": "Evaluation period (shift time) - planned downtimes (POT)) * setpoint OEE"
},
"readonly": {
"type": "boolean",
"description": "Always TRUE"
},
"cleaned": {
"type": "boolean",
"description": ""
},
"workerHours": {
"type": [
"number",
"null"
],
"description": "Number of employee hours"
},
"lastShiftFlag": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the shift is the last on that day of production"
},
"timeTargetOeeLow": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes) * OEE target value lower intervention limit"
},
"timeTargetOeeHigh": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes) * OEE target value upper intervention limit"
},
"timeProdTargetLow": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value lower intervention limit"
},
"timeProdTarget": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value"
},
"timeProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value upper intervention limit"
},
"timeTargetNurelLow": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value lower intervention limit"
},
"timeTargetNurel": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value"
},
"timeTargetNurelHigh": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value upper intervention limit"
},
"timeTargetNuistLow": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value lower intervention limit"
},
"timeTargetNuist": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value"
},
"timeTargetNuistHigh": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value upper intervention limit"
},
"externalSourceFlag": {
"type": "boolean",
"description": "Automatically set to true for data added via the POST endpoint"
},
"timeDirectProdTargetLow": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers lower limit"
},
"timeDirectProdTarget": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers (target * period_time in seconds)"
},
"timeDirectProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers upper limit"
},
"timeIndirectProdTargetLow": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers lower limit"
},
"timeIndirectProdTarget": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers (target * period_time in seconds)"
},
"timeIndirectProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers upper limit"
},
"timeTargetNuabsLow": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs) lower limit"
},
"timeTargetNuabs": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs)"
},
"timeTargetNuabsHigh": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs) upper limit"
},
"directWorkerHours": {
"type": [
"number",
"null"
],
"description": "Direct number of employee hours"
},
"indirectWorkerHours": {
"type": [
"number",
"null"
],
"description": "Indirect number of employee hours"
}
}
},
"aggInterruption": {
"type": "array",
"description": "List of aggregated interruption data.",
"items": {
"type": "object",
"properties": {
"iLocationId": {
"type": "string",
"description": "OPCON location ID, for which the data was calculated"
},
"iClass": {
"type": "integer",
"description": "0 for planned downtimes, 1 for unplanned downtimes"
},
"iGroup": {
"type": "string",
"description": "1 for organizational downtimes, 2 for technical downtimes, 3 for changeover"
},
"iType": {
"type": "number",
"description": "Number of the interruption"
},
"iTypeText": {
"type": "string",
"description": "Text description for the interruption"
},
"iCount": {
"type": "integer",
"description": "Number of interruptions of this type"
},
"iTimeDuration": {
"type": "number",
"description": "Duration of interruptions"
},
"iTimeDurationMerged": {
"type": "number",
"description": "Duration of the interruptions, during which the interruptions do not overlap with previous interruptions"
},
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"iTypeId": {
"type": "string",
"description": "Each interruption (number) must have a unique ID"
},
"iLocationName": {
"type": "string",
"description": "Name of the device on which the interruptions have occurred"
},
"iFormattedType": {
"type": "string",
"description": "Formatted type ID"
},
"iParentId": {
"type": [
"string",
"null"
],
"description": "ID of the parent cause"
},
"nurelRelevantFlag": {
"type": "boolean",
"description": "Specifies whether this interruption should beincluded in the NuRel calculation"
}
}
}
},
"aggStationError": {
"type": "array",
"description": "List of aggregated station error data.",
"items": {
"type": "object",
"properties": {
"eLocationId": {
"type": "string",
"description": "OPCON location ID (station) for which the data was calculated"
},
"eNumber": {
"type": "number",
"description": "Error number of the station error"
},
"eText": {
"type": "string",
"description": "The general error text for the respective station error"
},
"eDeviceText": {
"type": "string",
"description": "Name of the error text file"
},
"eCount": {
"type": "integer",
"description": "Number of station errors; this number is 0 if the error started before the respective shift"
},
"eTimeDuration": {
"type": "number",
"description": "Total duration of station errors"
},
"eTimeDurationMerged": {
"type": "number",
"description": "Duration of station error, where overlaps are subtracted out"
},
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"eLocationName": {
"type": "string",
"description": "Name of the device at which the errors occurred"
},
"eTimeDurationMttr": {
"type": "number",
"description": "Duration 'Mean time to repair'"
},
"eCountMttr": {
"type": "integer",
"description": "Number of 'Mean time to repair'"
}
}
}
},
"aggTypeData": {
"type": "array",
"description": "List of aggregated type data.",
"items": {
"type": "object",
"properties": {
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"typeNumber": {
"type": "string",
"description": "Number of the type of the NOK processes"
},
"typeVariant": {
"type": "string",
"description": "Variant of the type of the NOK processes"
},
"countPartProcessedFirst": {
"type": "integer",
"description": "Total number of processes at the first station (input)"
},
"countIo": {
"type": "integer",
"description": "Total number of OK processes at the last station (output)"
},
"countNio": {
"type": "integer",
"description": "Total number of NOK processes (ResultState=2)"
},
"countPartProcessed": {
"type": "integer",
"description": "Total number of processes at the last station"
},
"countOthers": {
"type": "integer",
"description": "Number of processes with ResultState>3 and ResultState!=12"
},
"countScrap": {
"type": "integer",
"description": "Number of scrap processes (ResultState=12)"
},
"countAbort": {
"type": "integer",
"description": "Number of processes in which processing was canceled (ResultState=3)"
},
"fpyIo": {
"type": "integer",
"description": "Number of OK processes at the last station without rework"
},
"fpyAll": {
"type": "integer",
"description": "Number of processes at the last station after the first pass (of the last station)"
},
"timePartProcessedFirst": {
"type": [
"number",
"null"
],
"description": "CountPartProcessedFirst * target cycle time"
},
"timeIo": {
"type": [
"number",
"null"
],
"description": "OK processes (output) in the time interval (including for calculation of the OEE in accordance with the standard)"
},
"timeNio": {
"type": [
"number",
"null"
],
"description": "NOK processes in the time interval (ResultState=2)"
},
"timePartProcessed": {
"type": [
"number",
"null"
],
"description": "Total number of parts at last station * target cycle time"
},
"timeOthers": {
"type": [
"number",
"null"
],
"description": "CountOthers * target cycle time"
},
"timeScrap": {
"type": [
"number",
"null"
],
"description": "CountScrap * target cycle time"
},
"timeAbort": {
"type": [
"number",
"null"
],
"description": "CountAbort * target cycle time"
},
"minValidFrom": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time stamp of the first occurrence of this type"
},
"maxValidTo": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time stamp of the last occurrence of this type"
},
"timeTargetOee": {
"type": [
"number",
"null"
],
"description": "Evaluation period (shift time) - planned downtimes (POT)) *setpoint OEE"
},
"countTargetOee": {
"type": [
"number",
"null"
],
"description": "Number of processes to achieve the target OEE"
},
"countTargetOee100": {
"type": [
"number",
"null"
],
"description": "Number of processes to achieve 100% OEE"
},
"countTargetNuist100": {
"type": [
"number",
"null"
],
"description": "Production period / target cycle time"
},
"countTargetNurel100": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes from shift model) / target cycle time"
},
"timeTargetOeeLow": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes) * OEE target value lower intervention limit"
},
"timeTargetOeeHigh": {
"type": [
"number",
"null"
],
"description": "(Production period - planned downtimes) * OEE target value upper intervention limit"
},
"timeProdTargetLow": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value lower intervention limit"
},
"timeProdTarget": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value"
},
"timeProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "(Production period) * productivity target value upper intervention limit"
},
"timeTargetNurelLow": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value lower intervention limit"
},
"timeTargetNurel": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value"
},
"timeTargetNurelHigh": {
"type": [
"number",
"null"
],
"description": "(Production period - non-NuRel-relevant downtimes) * NuRel target value upper intervention limit"
},
"timeTargetNuistLow": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value lower intervention limit"
},
"timeTargetNuist": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value"
},
"timeTargetNuistHigh": {
"type": [
"number",
"null"
],
"description": "(Production period) * Nuist target value upper intervention limit"
},
"timeDirectProdTargetLow": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers lower limit"
},
"timeDirectProdTarget": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers (target * period_time in seconds)"
},
"timeDirectProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "Target value for only direct workers upper limit"
},
"timeIndirectProdTargetLow": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers lower limit"
},
"timeIndirectProdTarget": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers (target * period_time in seconds)"
},
"timeIndirectProdTargetHigh": {
"type": [
"number",
"null"
],
"description": "Target value for only indirect workers upper limit"
},
"timeTargetNuabsLow": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs) lower limit"
},
"timeTargetNuabs": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs)"
},
"timeTargetNuabsHigh": {
"type": [
"number",
"null"
],
"description": "Evaluation period (365*24/7) (reserved for calculation of Uabs) upper limit"
},
"aggCycleTime": {
"type": "array",
"description": "List of aggregated cycle time data.",
"properties": {
"ctLocationId": {
"type": "string",
"description": "OPCON location ID, for which the data was calculated"
},
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"typeNumber": {
"type": "string",
"description": "Number of the type of the NOK processes"
},
"typeVariant": {
"type": "string",
"description": "Variant of the type of the NOK processes"
},
"ctEventType": {
"type": "integer",
"description": "Event type"
},
"lowerQuartileFirst": {
"type": [
"integer",
"null"
],
"description": "Bottom quantile of the cycle times (the corresponding percentage value can be configured in the config table of the source PdaMda database)"
},
"lowerQuartile25": {
"type": [
"integer",
"null"
],
"description": "25% quantile of the cycle times"
},
"medianCycleTime": {
"type": [
"integer",
"null"
],
"description": "Median (50% quantile) of cycle times"
},
"upperQuartile75": {
"type": [
"integer",
"null"
],
"description": "75% quantile of the cycle times"
},
"upperQuartileLast": {
"type": [
"integer",
"null"
],
"description": "Highest quantile of the cycle times (the corresponding percentage value can be configured in the config table of the source PdaMda database)"
},
"minCycleTime": {
"type": [
"integer",
"null"
],
"description": "Lowest cycle time value"
},
"maxCycleTime": {
"type": [
"integer",
"null"
],
"description": "Highest cycle time value"
},
"averageCycleTime": {
"type": [
"integer",
"null"
],
"description": "Average value of the cycle times"
},
"countCycleTime": {
"type": [
"integer",
"null"
],
"description": "Number of cycle time values"
},
"processNumber": {
"type": [
"integer",
"null"
],
"description": "Process number"
}
}
},
"aggNioBit": {
"type": "array",
"description": "List of aggregated NioBit data.",
"properties": {
"nioLocationId": {
"type": "string",
"description": "OPCON location ID, for which the data was calculated"
},
"nioBitpos": {
"type": "integer",
"description": "NOK bit number"
},
"nioText": {
"type": "string",
"description": "NOK-Bit Text"
},
"nioCount": {
"type": "integer",
"description": "Number of NOK processes"
},
"shiftUuid": {
"type": "string",
"description": "Unique identifier of the shift"
},
"typeNumber": {
"type": "string",
"description": ""
},
"typeVariant": {
"type": "string",
"description": ""
},
"nioProcessNumber": {
"type": [
"integer",
"null"
],
"description": "Process number"
},
"nioLocationName": {
"type": "string",
"description": "Name of the device"
},
"nioTime": {
"type": [
"number",
"null"
],
"description": "NOKCount * target cycle time"
}
}
}
}
}
}
},
"required": [
"aggData"
]
}