/  Yamcs HTTP API  /  Commands  /  Subscribe Commands

Subscribe CommandsΒΆ

Receive updates on issued commands

WebSocket

This method requires to upgrade an HTTP connection to WebSocket. See details on how Yamcs uses WebSocket.

Use the message type commands.

Input Type

interface SubscribeCommandsRequest {

  // Yamcs instance name
  instance: string;

  // Processor name
  processor: string;

  // If true, send only updates for commands that
  // were issued after the subscription start.
  //
  // For clients that piece together command updates, this
  // can help avoid partially received commands.
  ignorePastCommands: boolean;
}

Output Type

interface CommandHistoryEntry {
  id: string;

  // Qualified name
  commandName: string;

  // Name aliases keyed by namespace.
  // (as currently present in Mission Database)
  aliases: {[key: string]: string};
  origin: string;
  sequenceNumber: number;
  commandId: CommandId;
  attr: CommandHistoryAttribute[];
  generationTime: string;  // RFC 3339 timestamp
  assignments: CommandAssignment[];
}

Related Types

interface CommandId {
  generationTime: string;  // String decimal
  origin: string;
  sequenceNumber: number;
  commandName: string;
}

interface CommandHistoryAttribute {
  name: string;
  value: Value;
  time: string;  // String decimal
}

// Union type for storing a value
interface Value {
  type: Type;
  floatValue: number;
  doubleValue: number;
  sint32Value: number;
  uint32Value: number;
  binaryValue: string;  // Base64
  stringValue: string;
  timestampValue: string;  // String decimal
  uint64Value: string;  // String decimal
  sint64Value: string;  // String decimal
  booleanValue: boolean;
  aggregateValue: AggregateValue;
  arrayValue: Value[];
}

// An aggregate value is an ordered list of (member name, member value).
// Two arrays are used in order to be able to send just the values (since
// the names will not change)
interface AggregateValue {
  name: string[];
  value: Value[];
}

interface CommandAssignment {
  name: string;
  value: Value;
  userInput: boolean;
}

enum Type {
  FLOAT = "FLOAT",
  DOUBLE = "DOUBLE",
  UINT32 = "UINT32",
  SINT32 = "SINT32",
  BINARY = "BINARY",
  STRING = "STRING",
  TIMESTAMP = "TIMESTAMP",
  UINT64 = "UINT64",
  SINT64 = "SINT64",
  BOOLEAN = "BOOLEAN",
  AGGREGATE = "AGGREGATE",
  ARRAY = "ARRAY",

  // Enumerated values have both an integer (sint64Value) and a string representation
  ENUMERATED = "ENUMERATED",
  NONE = "NONE",
}