Click or drag to resize

CFX.Production Namespace

CFX Topic implemented by endpoints which are involved in the process of creating and testing production units.
Classes
 ClassDescription
Public classActivateRecipeRequest Used to activate a named recipe at the process endpoint. The response indicates whether this was successful or not.
{
  "RecipeName": "RECIPE1234",
  "Revision": "C",
  "Lane": 1,
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  }
}
Public classActivateRecipeResponse Response to a request to activate a named recipe at the process endpoint.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  }
}
Public classActivitiesExecuted Indicates that one or more activities have been performed in the course of processing one or more production units. The activities may or may not be value added. Activities are dynamic structures, and may vary depending upon the nature and purpose of the endpoint.
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "Activities": [
    {
      "$type": "CFX.Structures.UnitLoadActivity, CFX",
      "LoadTime": "00:00:05.3000000",
      "TimeStamp": "2018-10-25T08:45:51.5300797-04:00",
      "ActivityInstanceId": "dec7ca54-efc7-4519-a250-0bc7dbeae1d6",
      "ActivityState": "Completed",
      "ActivityName": "UNIT LOAD",
      "Comments": null,
      "ValueAddType": "NonValueAdd"
    },
    {
      "$type": "CFX.Structures.UnitAlignmentActivity, CFX",
      "DX": 0.0,
      "DY": 0.0,
      "DZ": 0.0,
      "DXY": 0.0,
      "DZX": 0.0,
      "DZY": 0.0,
      "TimeStamp": "2018-10-25T08:45:51.5300797-04:00",
      "ActivityInstanceId": "a6a3307b-d2e4-4c50-a8cc-9949b7866a2b",
      "ActivityState": "Started",
      "ActivityName": "UNIT ALIGNMENT",
      "Comments": null,
      "ValueAddType": "NonValueAdd"
    },
    {
      "$type": "CFX.Structures.UnitAlignmentActivity, CFX",
      "DX": 0.125,
      "DY": 0.104,
      "DZ": 0.0,
      "DXY": 0.987,
      "DZX": 0.0,
      "DZY": 0.0,
      "TimeStamp": "2018-10-25T08:45:56.5300797-04:00",
      "ActivityInstanceId": "a6a3307b-d2e4-4c50-a8cc-9949b7866a2b",
      "ActivityState": "Completed",
      "ActivityName": "UNIT ALIGNMENT",
      "Comments": null,
      "ValueAddType": "NonValueAdd"
    },
    {
      "$type": "CFX.Structures.SMTPlacement.SMTNozzleChangeActivity, CFX",
      "OldNozzles": [],
      "NewNozzles": [
        {
          "HeadId": "HEAD1",
          "HeadNozzleNumber": 1,
          "NozzleType": "409A",
          "UniqueIdentifier": "UID234213421",
          "Name": "Nozzle45"
        },
        {
          "HeadId": "HEAD1",
          "HeadNozzleNumber": 2,
          "NozzleType": "302B",
          "UniqueIdentifier": "UID234213421",
          "Name": "Nozzle32"
        }
      ],
      "TimeStamp": "2018-10-25T08:46:16.5300797-04:00",
      "ActivityInstanceId": "fa97ae52-2374-4530-8ec5-107fc5bb1ff1",
      "ActivityState": "Completed",
      "ActivityName": "NOZZLE CHANGE",
      "Comments": null,
      "ValueAddType": "NonValueAdd"
    },
    {
      "$type": "CFX.Structures.UnitUnloadActivity, CFX",
      "UnloadTime": "00:00:03.2000000",
      "TimeStamp": "2018-10-25T08:46:46.5300797-04:00",
      "ActivityInstanceId": "b5d68d84-440f-4667-b5b7-aa481fcff002",
      "ActivityState": "Completed",
      "ActivityName": "UNIT UNLOAD",
      "Comments": null,
      "ValueAddType": "NonValueAdd"
    }
  ]
}
Public classBlockMaterialLocationsRequest Sent to a process endpoint to block or disable a particular material setup location. This is typically used where a loaded material may become unsuitable for use, for example MSD expiry of an SMT material.
{
  "Reason": "ExpiredMaterial",
  "Comments": "MSD Material Has Expired",
  "Locations": [
    {
      "LocationIdentifier": "23143433",
      "LocationName": "SLOT45",
      "MaterialPackage": null,
      "CarrierInformation": null
    },
    {
      "LocationIdentifier": "23143454",
      "LocationName": "SLOT46",
      "MaterialPackage": null,
      "CarrierInformation": null
    }
  ]
}
Public classBlockMaterialLocationsResponse Sent to a process endpoint to block or disable a particular material setup location. This is typically used where a loaded material may become unsuitable for use, for example MSD expiry of an SMT material.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  }
}
Public classGetActiveRecipeRequest Used to request the name of the recipe that is activated at a process endpoint. The response indicates the name of the recipe.
{
  "Lane": 1,
  "Stage": null
}
Public classGetActiveRecipeResponse Used to request the name of the recipe that is activated at a process endpoint. The response indicates the name of the recipe.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  },
  "ActiveRecipeName": "RECIPE5566",
  "ActiveRecipeRevision": "C"
}
Public classGetAvailableRecipesRequest

** NOTE: ADDED in CFX 1.4 **

This message is used to request a process endpoint for the available recipes. The response includes the list of the recipes, with a maximun specified by the MaxCount parameter
{
  "Path": "myRecipes/CFX/A-Team*",
  "MaxCount": 5
}
Public classGetAvailableRecipesResponse

** NOTE: ADDED in CFX 1.4 **

Response to a request of getting the available recipes. The response includes a list of recipes (name, revision), but not their data.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  },
  "ActualCount": 3,
  "RecipeCount": 2,
  "Recipes": [
    {
      "RecipeName": "Recipe1",
      "Revision": "1.2"
    },
    {
      "RecipeName": "Recipe2",
      "Revision": "2.7"
    }
  ]
}
Public classGetRecipeRequest This message is used to request a process endpoint for the details of a named recipe. The response includes details of the recipe, depending on the classification of the process.
{
  "RecipeName": "RECIPE3234",
  "Revision": null
}
Public classGetRecipeResponse This message is used to request a process endpoint for the details of a named recipe. The response includes details of the recipe, depending on the classification of the process.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": null
  },
  "Recipe": {
    "Name": "RECIPE4455",
    "Revision": null,
    "MimeType": "application/octet-stream",
    "RecipeData": "ESKImSNVZlM="
  }
}

UnitsInspectionRecipe provides the means to convey static recipe information of inspection programs. It is expected to contain an InspectionMeasurementExpected object for each solder deposit to inspect.

{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": null
  },
  "Recipe": {
    "$type": "CFX.Structures.SolderPasteInspection.SolderPasteInspectionRecipe, CFX",
    "Name": "SolderRecipeXYZ_TextBoard1",
    "Revision": "1.3.3.33",
    "ExpectedCycleTime": 0.0,
    "ExpectedUnitsPerWorkTransaction": 0.0,
    "UnitLength": null,
    "UnitWidth": null,
    "UnitHeight": null,
    "MimeType": null,
    "RecipeData": null,
    "UnitsToInspect": [
      {
        "UnitPositionNumber": 1,
        "Name": null,
        "ChildObjects": [
          {
            "Group": "Resistor",
            "Type": "Pad",
            "RefNo": 1,
            "CRD": "R100.1",
            "PartNumber": "A2C000628080001",
            "PackageType": "0201",
            "Steps": [
              {
                "Name": "PasteDeposit",
                "Sequence": 1,
                "TargetValue": {
                  "EX": 0.8,
                  "EY": 1.5,
                  "EZ": 0.1,
                  "PX": 1000.0,
                  "PY": 1200.0,
                  "EA": 1.2,
                  "EVol": 0.0001,
                  "AR": 1.8,
                  "RXY": 0.0,
                  "Vertices": null,
                  "UniqueIdentifier": "249a0c81-875f-474f-85b3-5c628108efec",
                  "MeasurementName": null,
                  "TimeRecorded": null,
                  "Sequence": 0,
                  "Result": "Passed",
                  "CRDs": null
                }
              }
            ]
          },
          {
            "Group": "Resistor",
            "Type": "Pad",
            "RefNo": 2,
            "CRD": "R100.2",
            "PartNumber": "A2C000628080001",
            "PackageType": "0201",
            "Steps": [
              {
                "Name": "PasteDeposit",
                "Sequence": 1,
                "TargetValue": {
                  "EX": 0.8,
                  "EY": 1.5,
                  "EZ": 0.0,
                  "PX": 3000.0,
                  "PY": 1200.0,
                  "EA": 1.2,
                  "EVol": 0.0001,
                  "AR": 1.8,
                  "RXY": 0.0,
                  "Vertices": null,
                  "UniqueIdentifier": "71aeb946-ace8-4c83-997e-2bc9cabc5e91",
                  "MeasurementName": null,
                  "TimeRecorded": null,
                  "Sequence": 0,
                  "Result": "Passed",
                  "CRDs": null
                }
              }
            ]
          }
        ]
      }
    ],
    "RecipeGenerationDate": "2020-11-30T13:35:00.4214651+01:00",
    "InspectionMethod": "Human"
  }
}
Public classGetRequiredSetupRequest Sent to a process endpoint to request the setup requirements of the active recipe. The response lists the required materials and tools, along with the locations where the materials/tools must be loaded.
{
  "Lane": 1,
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  }
}
Public classGetRequiredSetupResponse Response from a process endpoint to a request to obtain the setup requirements of the active recipe. The response lists the required materials and tools, along with the locations where the materials/tools must be loaded.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  },
  "RecipeName": "RECIPE4455",
  "RecipeRevision": "C",
  "Lane": 1,
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "SetupRequirements": {
    "Lane": 1,
    "Stage": {
      "StageSequence": 1,
      "StageName": "STAGE1",
      "StageType": "Work"
    },
    "SetupName": "COMMONSETUP45",
    "MaterialSetupRequirements": [
      {
        "Position": "B1.F.45",
        "PartNumber": "IPN1123",
        "ApprovedAlternateParts": [
          "IPN2343",
          "IPN3432"
        ],
        "ApprovedManufacturerParts": [
          "MOT4329",
          "SAM5566"
        ]
      },
      {
        "Position": "B1.F.47",
        "PartNumber": "IPN1124",
        "ApprovedAlternateParts": [
          "IPN3344",
          "IPN3376"
        ],
        "ApprovedManufacturerParts": [
          "JP55443",
          "TX554323"
        ]
      }
    ],
    "ToolSetupRequirements": [
      {
        "Position": "MODULE1.BEAM1",
        "PartNumber": "HEADTYPE5566",
        "ToolIdentifier": null
      },
      {
        "Position": "MODULE1.BEAM2",
        "PartNumber": "HEADTYPE5577",
        "ToolIdentifier": null
      }
    ]
  }
}
Public classGetUnitInfoRequest

** NOTE: ADDED in CFX 1.4 **

This message is used to request a process endpoint for the details of a list of Unit
{
  "PrimaryIdentifier": SN1234567890,
  "HermesIdentifier": null,
  "UnitIdentifier":null
}
Public classGetUnitInfoResponse

** NOTE: ADDED in CFX 1.4 **

Response from a process endpoint to a request to obtatin Unit information. The reponse lists the units and the related information (e.g., BadMark, Fiducials)
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": null
  },
  "PrimaryIdentifier": "SN123456789",
  "HermesIdentifier": null,
  "UnitCount": 2,
  "Units": [
    {
      "BadMark": 0,
      "FiducialCount": 2,
      "Fiducials": [
        {
          "FiducialX": 0.12,
          "FiducialY": 0.16,
          "FiducialRXY": 0.0
        },
        {
          "FiducialX": 0.12,
          "FiducialY": 2.56,
          "FiducialRXY": 0.0
        }
      ],
      "UnitIdentifier": "SN12345",
      "PositionNumber": 1,
      "PositionName": "Circuit1",
      "X": 0.254,
      "Y": 0.556,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "BadMark": 1,
      "FiducialCount": null,
      "Fiducials": null,
      "UnitIdentifier": "SN091235",
      "PositionNumber": 0,
      "PositionName": null,
      "X": 0.0,
      "Y": 0.0,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}
Public classLockStationRequest Request that the endpoint cease active operation (locked) as soon as practically possible at a process endpoint. A specific production lane or stage may be optionally specified. Includes a reason, and applies to all operations. The response indicates that the process has stopped.
{
  "Lane": 1,
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "Reason": "QualityIssue",
  "Requestor": {
    "OperatorIdentifier": "e4d92c77-6a19-4d1e-8c2a-b2b217f59a44",
    "ActorType": "Human",
    "LastName": "Smith",
    "FirstName": "Bill",
    "LoginName": "bill.smith@domain1.com"
  }
}
Public classLockStationResponse Response to a request that the endpoint cease active operation (locked) as soon as practically possible at a process endpoint.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  }
}
Public classOperatorActivated Indicates that an operator is now active at or responsible for a process endpoint. Having multiple operators (each needs to be activated and deactivated separately) or an absence of an operator is possible.
{
  "Operator": {
    "OperatorIdentifier": "42b7a5cc-3bbd-4010-8a01-1c5851b9a2a3",
    "ActorType": "Human",
    "LastName": "Smith",
    "FirstName": "Bill",
    "LoginName": "bill.smith@domain1.com"
  }
}
Public classOperatorDeactivated Indicates that an activated operator is no longer active or responsible at a process endpoint
{
  "Operator": {
    "OperatorIdentifier": "ea9da45d-9b1f-4e6a-974f-df06aeede42f",
    "ActorType": "Human",
    "LastName": "Smith",
    "FirstName": "Bill",
    "LoginName": "bill.smith@domain1.com"
  }
}
Public classReadingsRecorded A process endpoint uses this message to send a data object that has been acquired for example from a sensor or a reading taken during processing of the unit. This data is typically used as a traceability record. Where no unit ID is provided, the measurement is applicable to the process in terms of time only.
Public classRecipeActivated Sent by a process endpoint to indicate the activation of a recipe by its name
{
  "RecipeName": "RECIPE3234",
  "Revision": "B",
  "Lane": 1,
  "Stage": null,
  "ExpectedCycleTime": 60,
  "ExpectedUnitsPerWorkTransaction": 1,
  "NumberOfComponentsPerUnit": 500,
  "WorkOrderIdentifier": {
    "WorkOrderId": "WO-1000-1000",
    "Batch": "WO-1000-1000-B1"
  },
  "TargetQuantity": 500.0,
  "RelevantSurface": "PrimarySurface",
  "RecipeStagesInformation”: [
  {
    "Stage": {
      "StageSequence": 1,
      "StageName": "STAGE1",
      "StageType": "Work"
    }
    "ExpectedCycleTime": 80,
    "NumberOfComponentsPerUnit": 200
  },
  {
    "Stage": {
      "StageSequence": 2,
      "StageName": "STAGE2",
      "StageType": "Work"
    }
    "ExpectedCycleTime": 120,
    "NumberOfComponentsPerUnit": 250
  }
  ]
}
Public classRecipeDeactivated

** NOTE: ADDED in CFX 1.2 **

Sent by a process endpoint to indicate the deactivation of a recipe by its name
{
  "RecipeName": "RECIPE3234",
  "Revision": "B",
  "Lane": 1,
  "Stage": null
}
Public classRecipeModified Sent by a process endpoint to indicate that a change has been made to a specified named recipe.
{
  "RecipeName": "RECIPE3234",
  "Revision": "D",
  "ModifiedBy": {
    "OperatorIdentifier": "95739c63-7e59-481b-a597-627cb843c8f4",
    "ActorType": "Human",
    "LastName": "Smith",
    "FirstName": "Bill",
    "LoginName": "bill.smith@domain1.com"
  },
  "Reason": "PositionalCorrection",
  "Notes": null
}
Public classSetupRequirementsChanged Sent whenever the setup requirement of materials, tools, etc. are changed for any reason at a process endpoint. This message contains a detailed listing of the required items, and their designated positions. This message is typically used for example, whenever a new recipe is activated which requires a different setup. If the Lane and Stage properties are left empty, the setup requirements of the entire Endpoint have been impacted. Otherwise, only the specified Lane and/or Stage is impacted.
{
  "Lane": 1,
  "Stage": null
}
Public classToolsCleaned

** NOTE: ADDED in CFX 1.5 **

This message is used when a tool such as stencil or squeegee is loaded into a cleaning machine
{
  "TransactionID": "72b27f43-78ff-4804-bf5c-45582f6463e3",
  "Tools": [
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTSqueegee, CFX",
      "CleaningState": "Cleaned",
      "UniqueIdentifier": "SQ1234567890",
      "Name": "Squeegee name"
    },
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTStencil, CFX",
      "CleaningState": "Cleaned",
      "UniqueIdentifier": "ST1234567890",
      "Name": "Stencil name"
    }
  ],
  "CleaningSteps": [
    {
      "CleaningStepType": "Wash",
      "CleaningStepTime": 200.0,
      "Readings": [
        {
          "ReadingType": "FlowRateAverage",
          "ReadingValue": 12.0
        },
        {
          "ReadingType": "FlowRateMax",
          "ReadingValue": 20.0
        },
        {
          "ReadingType": "FlowRateMin",
          "ReadingValue": 4.0
        }
      ]
    }
  ]
}
Public classToolsLoaded

** NOTE: ADDED in CFX 1.5 **

This message is used when a tool such as stencil or squeegee is loaded into a cleaning machine
{
  "TransactionID": "d3e7fe9a-5e42-4121-9edd-a8b46d112ba9",
  "Tools": [
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTSqueegee, CFX",
      "CleaningState": "NotCleaned",
      "UniqueIdentifier": "SQ1234567890",
      "Name": "Squeegee name"
    },
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTStencil, CFX",
      "CleaningState": "Unknown",
      "UniqueIdentifier": "ST1234567890",
      "Name": "Stencil name"
    }
  ]
}
Public classToolsUnloaded

** NOTE: ADDED in CFX 1.5 **

This message is used when a tool such as stencil or squeegee is unloaded from a cleaning machine
{
  "TransactionID": "d3e7fe9a-5e42-4121-9edd-a8b46d112ba9",
  "Tools": [
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTSqueegee, CFX",
      "CleaningState": "Cleaned",
      "UniqueIdentifier": "SQ1234567890",
      "Name": "Squeegee name"
    },
    {
      "$type": "CFX.Structures.SolderPastePrinting.SMTStencil, CFX",
      "CleaningState": "Cleaned",
      "UniqueIdentifier": "ST1234567890",
      "Name": "Stencil name"
    }
  ]
}
Public classToolsUsed Sent by a process endpoint when one or more tools are used in the course of performing an assembly operation.

JSON Example - SMT Placement Machine

{
  "TransactionId": "ff199a2e-4b31-4321-8afe-eff177f1a860",
  "UsedTools": [
    {
      "UnitIdentifier": "PANEL23423432",
      "UnitPositionNumber": 1,
      "Tool": {
        "$type": "CFX.Structures.SMTPlacement.SMTHeadAndNozzle, CFX",
        "HeadId": "HEAD1",
        "HeadNozzleNumber": 2,
        "NozzleType": "409A",
        "UniqueIdentifier": "UID234213421",
        "Name": "Nozzle45"
      },
      "UsageCycles": 3,
      "InstalledComponents": [
        {
          "ReferenceDesignator": "R1",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        },
        {
          "ReferenceDesignator": "R2",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        },
        {
          "ReferenceDesignator": "R3",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        }
      ]
    },
    {
      "UnitIdentifier": "PANEL23423432",
      "UnitPositionNumber": 2,
      "Tool": {
        "$type": "CFX.Structures.SMTPlacement.SMTHeadAndNozzle, CFX",
        "HeadId": "HEAD2",
        "HeadNozzleNumber": 3,
        "NozzleType": "409A",
        "UniqueIdentifier": "UID234223422",
        "Name": "Nozzle47"
      },
      "UsageCycles": 3,
      "InstalledComponents": [
        {
          "ReferenceDesignator": "R1",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        },
        {
          "ReferenceDesignator": "R2",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        },
        {
          "ReferenceDesignator": "R3",
          "InstallationTime": "2018-10-25T08:46:46.6320834-04:00"
        }
      ]
    }
  ]
}

JSON Example - Hammer Used by Human in Manual Operation

{
  "TransactionId": "8561b98b-21ba-47e6-810d-0917b58a4415",
  "UsedTools": [
    {
      "UnitIdentifier": "PANEL23423432",
      "UnitPositionNumber": 1,
      "Tool": {
        "UniqueIdentifier": "UID234228874",
        "Name": "Hammer 45"
      },
      "UsageCycles": 3,
      "InstalledComponents": []
    },
    {
      "UnitIdentifier": "PANEL23423432",
      "UnitPositionNumber": 2,
      "Tool": {
        "UniqueIdentifier": "UID234228874",
        "Name": "Hammer 45"
      },
      "UsageCycles": 3,
      "InstalledComponents": []
    }
  ]
}
Public classUnblockMaterialLocationsRequest Sent to a process endpoint to release a material locations block which was put into place by a previously sent BlockMaterialLocationsRequest
{
  "Locations": [
    {
      "LocationIdentifier": "23143433",
      "LocationName": "SLOT45",
      "MaterialPackage": null,
      "CarrierInformation": null
    },
    {
      "LocationIdentifier": "23143454",
      "LocationName": "SLOT46",
      "MaterialPackage": null,
      "CarrierInformation": null
    }
  ]
}
Public classUnblockMaterialLocationsResponse Response to UnblockMaterialLocationsRequest
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "BLOCKED OK"
  }
}
Public classUnitsArrived Sent when production units physically arrives at a process endpoint, prior to any work or other activity commencing.
{
  "UnitCount": 2,
  "Units": [
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 1,
      "PositionName": "CIRCUIT1",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 2,
      "PositionName": "CIRCUIT2",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 90.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}
Public classUnitsDeparted Sent by a process endpoint when units physically depart from a process endpoint. This does not imply any information about any activity that may have taken place.
{
  "UnitCount": 2,
  "Units": [
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 1,
      "PositionName": "CIRCUIT1",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 2,
      "PositionName": "CIRCUIT2",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 90.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}
Public classUnitsDisqualified Sent by a process endpoint to identify that a specific production unit is disqualified or scrapped. This includes logical disqualification in the case that a unit is abandoned during manufacturing
{
  "Reason": "DefectiveRepairNotPossible",
  "Comments": "The units were accidentally dropped, and irrepairably damaged",
  "Units": [
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 1,
      "PositionName": "CIRCUIT1",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 2,
      "PositionName": "CIRCUIT2",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 90.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}
Public classUnitsInitialized Sent when one or more production units are first introduced into the production process flow. Unit initialization most often occurs when new production units are first labeled with unique identifiers (or laser marked)
{
  "WorkOrderIdentifier": {
    "WorkOrderId": "WO45648798",
    "Batch": "BATCH45648798-1"
  },
  "TransactionID": null,
  "Units": [
    {
      "UnitIdentifier": "UNIT5566687",
      "PositionNumber": 1,
      "PositionName": "CIRCUIT1",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "UnitIdentifier": "UNIT5566688",
      "PositionNumber": 2,
      "PositionName": "CIRCUIT2",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 90.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}
Public classUnlockStationRequest Request that a process endpoint resume production, following a previous lock. The response indicates that the lock has been removed.
{
  "Lane": null,
  "Stage": null,
  "Requestor": {
    "OperatorIdentifier": "71926954-6b23-4f83-a5b4-ed7ef8cc226d",
    "ActorType": "Human",
    "LastName": "Smith",
    "FirstName": "Bill",
    "LoginName": "bill.smith@domain1.com"
  }
}
Public classUnlockStationResponse Response to a request for a process endpoint to resume production, following a previous lock.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  }
}
Public classUpdateRecipeRequest This message is used to send a named recipe to a process endpoint. The message includes details of the recipe, depending on the classification of the process. The response indicates whether the recipe has been received correctly or not.

UpdateRecipeRequest JSON example

{
  "Overwrite": true,
  "Recipe": {
    "Name": "RECIPE234324",
    "Revision": "C",
    "ExpectedCycleTime": 0.0,
    "ExpectedUnitsPerWorkTransaction": 0.0,
    "UnitLength": 22.46,
    "UnitWidth": 19.21,
    "UnitHeight": 0.85,
    "MimeType": "application/octet-stream",
    "RecipeData": "//w0"
  },
  "Reason": "NewRevision"
}

Load Printer Recipe / Modify Printer Recipe based on UpdateRecipeRequest and UpdateRecipeResponse

{
  "Overwrite": true,
  "Recipe": {
    "$type": "CFX.Structures.SolderPastePrinting.SolderPastePrintingRecipe, CFX",
    "Strokes": [
      {
        "PrintPressure": 1.0,
        "PrintSpeed": 12.0
      },
      {
        "PrintPressure": 2.0,
        "PrintSpeed": 9.0
      }
    ],
    "PrintGap": 1.2,
    "Separation": {
      "Name": null,
      "SeparationSpeed": 1.6,
      "SeparationDistance": 1.2,
      "SeparationDelay": null
    },
    "PeriodicCleanings": [
      {
        "CleanFrequency": 2,
        "CleanMode": "W"
      }
    ],
    "Name": "RECIPE234324",
    "Revision": "C",
    "ExpectedCycleTime": 46.25,
    "ExpectedUnitsPerWorkTransaction": 4.0,
    "UnitLength": 22.46,
    "UnitWidth": 19.21,
    "UnitHeight": 0.85,
    "MimeType": null,
    "RecipeData": null
  },
  "Reason": "NewRevision"
}
Public classUpdateRecipeResponse This message is used to send a named recipe to a process endpoint. The message includes details of the recipe, depending on the classification of the process. The response indicates whether the recipe has been received correctly or not.
{
  "Result": {
    "Result": "Success",
    "ResultCode": 0,
    "Message": "OK"
  }
}
Public classWorkCompleted Sent by a process endpoint when all work has been completed at a process endpoint.

Generic example

{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Result": "Completed",
  "PrimaryIdentifier": null,
  "HermesIdentifier": null,
  "UnitCount": 0,
  "Units": []
}

Example with PerformanceImpact empty - no performance impact

{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "Result": "Completed",
  "PerformanceImpacts": []
}

Example with PerformanceImpact

{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "Result": "Completed",
  "PerformanceImpacts": [
    {
      "Cause": "LowFeederSpeed"
    },
    {
      "Cause": "AlternativeTrackUsed"
    }
  ]
}
Public classWorkOrderActionExecuted

** NOTE: ADDED in CFX 1.2 **

Sent when a non-added value action (out of production) relative to a work order is started, aborted or completed by a process endpoint.
{
   "WorkOrderActionInstanceId": "dec7ca54-efc7-4519-a250-0bc7dbeae1d6",
   "WorkOrderIdentifier": {
    "WorkOrderId": "WO1122334455",
    "Batch": null
   },
   "TimeStamp": "2018-08-01T13:46:15.5391201-04:00",
   "Type": "PreProductionOperations",
   "State": "Started",
   "Comments": "Feeders loading",
}
Public classWorkStageCompleted Sent by a process endpoint to indicate that a stage has been completed.
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  },
  "Result": "Completed",
  "PerformanceImpacts": [
    {
      "Cause": "LowFeederSpeed"
    },
    {
      "Cause": "AlternativeTrackUsed"
    }
  ]
}
Public classWorkStagePaused Sent when activity pauses for some reason at a stage of the process endpoint
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  }
}
Public classWorkStageResumed Sent when activity recommences at a stage within a process endpoint, following a WorkStagePaused message
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  }
}
Public classWorkStageStarted Sent by a process endpoint when the work-stage for a unit or group of units starts
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Stage": {
    "StageSequence": 1,
    "StageName": "STAGE1",
    "StageType": "Work"
  }
}
Public classWorkStarted Sent by a process endpoint when the work-cycle for a unit or group of units starts
{
  "TransactionID": "2c24590d-39c5-4039-96a5-91900cecedfa",
  "Lane": 1,
  "UnitCount": 2,
  "Units": [
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 1,
      "PositionName": "CIRCUIT1",
      "X": 50.45,
      "Y": 80.66,
      "Rotation": 0.0,
      "FlipX": false,
      "FlipY": false
    },
    {
      "UnitIdentifier": "CARRIER5566",
      "PositionNumber": 2,
      "PositionName": "CIRCUIT2",
      "X": 70.45,
      "Y": 80.66,
      "Rotation": 90.0,
      "FlipX": false,
      "FlipY": false
    }
  ]
}