GET
OpticalSystemData
GET
Output/Wavelength
GET
Output/Interaction
GET
Output
GET
ExpandedInteractions
PUT
FinishWavelengthSettingAfterUserActions
PUT
SetWavelength
PUT
SetWavelengthUsingAnyInteraction
POST
PossibleOutputsForWavelength

/OpticalSystemData

Http method: GET

Gets information about current and last set wavelength and some additional info.

Request body is empty.

Response JSON body example:
{
  "OpticalSystemConfHash": "high",
  "Output": {
    "ActualInteraction": "NON",
    "IdlerWavelength": -1,
    "Interaction": "NON",
    "IsForBackgroundMeasurement": false,
    "IsUserActionCompleted": false,
    "IsWaitingForUserAction": false,
    "IsWavelengthSettingInProgress": true,
    "IsWavelengthStrict": false,
    "Messages": [
      {
        "Image": "shorts",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 17,
        "SeparationDeviceIndex": 44,
        "Text": "fact"
      },
      {
        "Image": "pour-over",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 39,
        "SeparationDeviceIndex": 15,
        "Text": "ethical"
      }
    ],
    "MotorPositions": [
      {
        "Key": 237,
        "Value": 59.727625483520157
      },
      {
        "Key": 4,
        "Value": 803.57052050697177
      }
    ],
    "OpticalDeviceOutputs": [
      {
        "Key": 209,
        "Value": 361.76872968756066
      },
      {
        "Key": 267,
        "Value": 24.317816376834092
      }
    ],
    "OtherDevicesOutputs": [
      {
        "Key": "234c9598",
        "Value": 930.29675536337152
      },
      {
        "Key": "d1c0d2cf",
        "Value": 122.81199876349979
      }
    ],
    "SignalWavelength": -1,
    "Wavelength": -1,
    "WavelengthSettingCompletionPart": 0
  },
  "PreviousOutput": {
    "ActualInteraction": "NON",
    "IdlerWavelength": -1,
    "Interaction": "NON",
    "IsForBackgroundMeasurement": false,
    "IsUserActionCompleted": false,
    "IsWaitingForUserAction": false,
    "IsWavelengthSettingInProgress": true,
    "IsWavelengthStrict": false,
    "Messages": [
      {
        "Image": "stumptown",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 24,
        "SeparationDeviceIndex": 87,
        "Text": "bushwick"
      },
      {
        "Image": "cleanse",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 26,
        "SeparationDeviceIndex": 19,
        "Text": "truffaut"
      }
    ],
    "MotorPositions": [
      {
        "Key": 257,
        "Value": 595.34301589957579
      },
      {
        "Key": 155,
        "Value": 683.75583863060729
      }
    ],
    "OpticalDeviceOutputs": [
      {
        "Key": 122,
        "Value": 487.00992320059328
      },
      {
        "Key": 218,
        "Value": 78.364958557470217
      }
    ],
    "OtherDevicesOutputs": [
      {
        "Key": "7a6c3be7",
        "Value": 752.39467516187335
      },
      {
        "Key": "5ec8b039",
        "Value": 117.93375672676309
      }
    ],
    "SignalWavelength": -1,
    "Wavelength": -1,
    "WavelengthSettingCompletionPart": 0
  },
  "SeparationSystemConfHash": "dreamcatcher",
  "StateHash": "Arizona",
  "WavelengthChangeMessages": [
    {
      "Image": "jean",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 56,
      "SeparationDeviceIndex": 92,
      "Text": "they"
    },
    {
      "Image": "ennui",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 50,
      "SeparationDeviceIndex": 4,
      "Text": "ennui"
    }
  ]
}

/Output/Wavelength

Http method: GET

Gets current output wavelength. If wavelength setting is in progress returns target wavelength.

Request body is empty.

Response JSON body example:
504.9611588497466

/Output/Interaction

Http method: GET

Gets current output interaction string. If wavelength setting is in progress returns target wavelengths interaction.

Request body is empty.

Response JSON body example:
"39d1f967"

/Output

Http method: GET

Gets current output information (wavelength, interaction, calculated motor positions and so on).

Returned properties

Name Explanation
Interaction Currently used interaction. NON if wavelength is not set.
Wavelength Currently set wavelength. -1 if wavelength is not set.
IsWavelengthStrict True if all motors positions match calibration exactly.
IsWavelengthSettingInProgress True if wavelength is being set now. This includes both motor movement and user actions (if any).
WavelengthSettingCompletionPart If IsWavelengthSettingInProgress==true indicates completion of motor movement. Range is 0-1.0.
IsWaitingForUserAction True if motors have been moved to their target positions and user has to perform manual operations. Call /FinishWavelengthSettingAfterUserActions after these operations are completed by user.
IsUserActionCompleted True if required user operations have been completed and confirmed bu user (using /FinishWavelengthSettingAfterUserActions).
Messages Messages with instructions/images to user.

Request body is empty.

Response JSON body example:
{
  "ActualInteraction": "NON",
  "IdlerWavelength": -1,
  "Interaction": "NON",
  "IsForBackgroundMeasurement": false,
  "IsUserActionCompleted": false,
  "IsWaitingForUserAction": false,
  "IsWavelengthSettingInProgress": true,
  "IsWavelengthStrict": false,
  "Messages": [
    {
      "Image": "heard",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 73,
      "SeparationDeviceIndex": 64,
      "Text": "retro"
    },
    {
      "Image": "locavore",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 93,
      "SeparationDeviceIndex": 38,
      "Text": "Tofu"
    }
  ],
  "MotorPositions": [
    {
      "Key": 239,
      "Value": 789.534831787243
    },
    {
      "Key": 207,
      "Value": 298.07990756727747
    }
  ],
  "OpticalDeviceOutputs": [
    {
      "Key": 11,
      "Value": 855.35658935800041
    },
    {
      "Key": 247,
      "Value": 748.47648700162608
    }
  ],
  "OtherDevicesOutputs": [
    {
      "Key": "ab6d576a",
      "Value": 679.40537430318329
    },
    {
      "Key": "ac795f58",
      "Value": 841.3278124487623
    }
  ],
  "SignalWavelength": -1,
  "Wavelength": -1,
  "WavelengthSettingCompletionPart": 0
}

/ExpandedInteractions

Http method: GET

Gets all interactions with their calibration ranges in current optical configuration expanded to simple representation.

Request body is empty.

Response JSON body example:
[
  {
    "BaseType": "NON",
    "CanMeasureBackground": false,
    "OutputRange": {
      "From": 0,
      "To": 0
    },
    "Type": "NON"
  },
  {
    "BaseType": "NON",
    "CanMeasureBackground": false,
    "OutputRange": {
      "From": 0,
      "To": 0
    },
    "Type": "NON"
  }
]

/FinishWavelengthSettingAfterUserActions

Http method: PUT

Client application should call this method after wavelength has been set and user's manual operations are completed. This method needs to be called only if setting wavelength required actions by user.

Parameters

Parameter Explanation
RestoreShutter If set to true and shutter was open before setting wavelength it will be opened again.

Request JSON body example:
{
  "RestoreShutter": false
}

Response JSON body example:
false

/SetWavelength

Http method: PUT

Sets new wavelength.

Parameters

Parameter Explanation
Interaction Simple interaction string (SH-SIG) or expandable (#-SIG). Use * to match use all interactions.
Wavelength Wavelength to set in nanometers.
IgnoreSeparation If set to true separation configuration won't be used (includes both motors and messages).
DontTouchShutterOnInteractionChange Leaves shutter opened while setting wavelength, unless there are new messages to user.
SetForBackground If set to true position of one motor is modified as configured in calibration to measure background radiation power.
Priorities (Can be ignored if Interaction is in in simple representation.) Priorities will be used to select interaction if there are more than one way to set wavelength using supplied Interaction.

Returned properties

Name Explanation
IsSuccess True if requested wavelength can be set.
ErrorMessage If IsSuccess is false, contains reason why wavelength can not be set.
Messages All messages for user. New messages (compared with previous output) have property IsNew set to true.
WillRequireUserActions True if user will have to perform manual operations after motors are in positons for requested wavelength.

Request JSON body example:
{
  "DontTouchShutterOnInteractionChange": false,
  "IgnoreSeparation": false,
  "SetForBackground": false,
  "Wavelength": 0,
  "Interaction": "pour-over",
  "Priorities": [
    {
      "Priority": 51,
      "Type": "Brooklyn"
    },
    {
      "Priority": 93,
      "Type": "pork"
    }
  ]
}

Response JSON body example:
{
  "ActualInteraction": "",
  "ErrorMessage": "",
  "FailedAfterInteractionSelection": false,
  "IdlerWavelength": 0,
  "Interaction": "",
  "IsForBackgroundMeasurement": false,
  "IsSuccess": true,
  "Messages": [
    {
      "Image": "richardson",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 8,
      "SeparationDeviceIndex": 20,
      "Text": "freegan"
    },
    {
      "Image": "echo",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 17,
      "SeparationDeviceIndex": 60,
      "Text": "hand"
    }
  ],
  "MotorPositions": [
    {
      "Key": 74,
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 31,
        "DecidedBy": 0
      }
    },
    {
      "Key": 250,
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 22,
        "DecidedBy": 0
      }
    }
  ],
  "OpticalDeviceOutputs": [
    {
      "Key": 249,
      "Value": 109.55629083772948
    },
    {
      "Key": 130,
      "Value": 530.96405720848782
    }
  ],
  "OtherOpticalDevicesOutputs": [
    {
      "Key": "17e5537a",
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 56,
        "Interaction": "government"
      }
    },
    {
      "Key": "5eeef0fa",
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 60,
        "Interaction": "man"
      }
    }
  ],
  "Output": 0,
  "PumpWavelength": 0,
  "SignalWavelength": 0
}

/SetWavelengthUsingAnyInteraction

Http method: PUT

Sets new wavelength. Any of the possible interactions that support this wavelength will be used. If you need extra options use method SetWavelength.

Request JSON body example:
761.64771791624264

Response JSON body example:
{
  "ActualInteraction": "",
  "ErrorMessage": "",
  "FailedAfterInteractionSelection": false,
  "IdlerWavelength": 0,
  "Interaction": "",
  "IsForBackgroundMeasurement": false,
  "IsSuccess": true,
  "Messages": [
    {
      "Image": "Brooklyn",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 29,
      "SeparationDeviceIndex": 87,
      "Text": "food"
    },
    {
      "Image": "child",
      "IsCritical": false,
      "IsNew": false,
      "MessengerIndex": 61,
      "SeparationDeviceIndex": 10,
      "Text": "future"
    }
  ],
  "MotorPositions": [
    {
      "Key": 143,
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 23,
        "DecidedBy": 0
      }
    },
    {
      "Key": 18,
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 35,
        "DecidedBy": 0
      }
    }
  ],
  "OpticalDeviceOutputs": [
    {
      "Key": 28,
      "Value": 488.1473302320332
    },
    {
      "Key": 53,
      "Value": 20.872750329260132
    }
  ],
  "OtherOpticalDevicesOutputs": [
    {
      "Key": "e0e1923b",
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 24,
        "Interaction": "Lomo"
      }
    },
    {
      "Key": "6056cba4",
      "Value": {
        "ConflictOption": 0,
        "IsPositionInSteps": false,
        "Position": 0,
        "Priority": 10,
        "Interaction": "pickled"
      }
    }
  ],
  "Output": 0,
  "PumpWavelength": 0,
  "SignalWavelength": 0
}

/PossibleOutputsForWavelength

Http method: POST

Gets all possible ways to set specific wavelength.

Request JSON body example:
376.27190136177086

Response JSON body example:
[
  {
    "ActualInteraction": "",
    "ErrorMessage": "",
    "FailedAfterInteractionSelection": false,
    "IdlerWavelength": 0,
    "Interaction": "",
    "IsForBackgroundMeasurement": false,
    "IsSuccess": true,
    "Messages": [
      {
        "Image": "DIY",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 20,
        "SeparationDeviceIndex": 89,
        "Text": "Umami"
      },
      {
        "Image": "womn",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 43,
        "SeparationDeviceIndex": 86,
        "Text": "sweater"
      }
    ],
    "MotorPositions": [
      {
        "Key": 136,
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 50,
          "DecidedBy": 0
        }
      },
      {
        "Key": 290,
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 78,
          "DecidedBy": 0
        }
      }
    ],
    "OpticalDeviceOutputs": [
      {
        "Key": 100,
        "Value": 962.24270805820947
      },
      {
        "Key": 139,
        "Value": 290.94555102798415
      }
    ],
    "OtherOpticalDevicesOutputs": [
      {
        "Key": "845d8615",
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 18,
          "Interaction": "jean"
        }
      },
      {
        "Key": "455b6b98",
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 86,
          "Interaction": "semiotics"
        }
      }
    ],
    "Output": 0,
    "PumpWavelength": 0,
    "SignalWavelength": 0
  },
  {
    "ActualInteraction": "",
    "ErrorMessage": "",
    "FailedAfterInteractionSelection": false,
    "IdlerWavelength": 0,
    "Interaction": "",
    "IsForBackgroundMeasurement": false,
    "IsSuccess": true,
    "Messages": [
      {
        "Image": "dreamcatcher",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 82,
        "SeparationDeviceIndex": 98,
        "Text": "wayfarers"
      },
      {
        "Image": "organic",
        "IsCritical": false,
        "IsNew": false,
        "MessengerIndex": 60,
        "SeparationDeviceIndex": 5,
        "Text": "life"
      }
    ],
    "MotorPositions": [
      {
        "Key": 257,
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 60,
          "DecidedBy": 0
        }
      },
      {
        "Key": 242,
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 50,
          "DecidedBy": 0
        }
      }
    ],
    "OpticalDeviceOutputs": [
      {
        "Key": 75,
        "Value": 268.41090306100011
      },
      {
        "Key": 43,
        "Value": 282.50201897812173
      }
    ],
    "OtherOpticalDevicesOutputs": [
      {
        "Key": "22370393",
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 9,
          "Interaction": "denim"
        }
      },
      {
        "Key": "e267d433",
        "Value": {
          "ConflictOption": 0,
          "IsPositionInSteps": false,
          "Position": 0,
          "Priority": 24,
          "Interaction": "before"
        }
      }
    ],
    "Output": 0,
    "PumpWavelength": 0,
    "SignalWavelength": 0
  }
]