Commands API

API Version: V2

Note

Base URL: https://your.iax.fqdn.com/api/obcerv-app-api-gateway/v2

To access the Commands API V1 documentation, see Commands API V1.

The ITRS Commands API provides an interface for registering commands, executing commands, monitoring command execution status and output, and managing fine-grained command permissions in ITRS Analytics.

Command Registry Copied

The Command Registry endpoints manage command definitions and registered command services.

Insert or update a single command definition Copied

Endpoint: PUT /commands
Description: Insert or update a single command definition.

Upsert a single command definition. Inserts or updates one command for its owning service. Prefer RegisterCommands when publishing a full command set from a Gateway. Commands may include optional commandGroups used with fine-grained command permissions.

Request Copied

Parameter Type Location Required Description
command Command Body Yes The command definition to insert or update.
id CommandId Body Yes Unique identifier for the command (service + name).
targets array of CommandTargetFilter Body Yes The targets the command applies to.
displayName string Body No The command’s display name.
resources array of string Body No IAM resources that restrict viewing or executing this command.
categories array of string Body No Categories used for filtering and grouping similar commands.
arguments array of CommandArgumentTypeEntry Body No The command’s arguments.
description string Body No The command’s description.
commandGroups array of string Body No Optional group names used to group related commands and scope command permissions.

Example Request Copied

{
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "displayName": "Manual",
    "commandGroups": [
      "snooze"
    ],
    "categories": [
      "Snooze",
      "Manual"
    ],
    "targets": [
      {
        "entity": {}
      }
    ]
  }
}

Response Copied

Success (200 OK):

{}

Delete a command from a service Copied

Endpoint: DELETE /commands
Description: Delete a command from a service.

Removes a single command definition from a service. Parameters are supplied as query string fields.

Request Copied

Parameter Type Location Required Description
serviceNamespace string Query Yes The service namespace of the command to delete.
serviceName string Query Yes The service name of the command to delete.
name string Query Yes The name of the command to delete.

Example Request Copied

DELETE /commands?serviceNamespace=serviceNamespace&serviceName=serviceName&name=name

Response Copied

Success (200 OK):

{}

Query configured commands for a target and/or service Copied

Endpoint: POST /commands/query
Description: Query configured commands for a target and/or service.

This endpoint returns registered command definitions for use in UIs such as Entity Viewer. Results can be narrowed by service (for example a Geneos Gateway), command name, command group, free-text search, or the entity/metric/log target the user selected.

When a command service has supportsPermissions enabled, results are filtered by the caller’s ITRS Analytics roles against that service’s command permissions. Services without permissions enabled are unaffected.

Request Copied

Parameter Type Location Required Description
service Service Body No When set, only commands for this service are returned.
name string Body No When set, only commands with this exact name are returned.
target CommandTarget Body No When set, only commands that apply to this entity, metric, or log target are returned.
commandGroup string Body No When set, only commands in this command group are returned.
searchTerm string Body No When set, only commands whose display name or categories contain this term are returned (case-insensitive substring match).
excludeFilters boolean Body No When true, command target filters are omitted from the response to reduce payload size. Defaults to false.
skip integer Body No Number of matching commands to skip before returning results. Defaults to 0.
limit integer Body No Maximum number of commands to return. Defaults to 100.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "target": {
    "entity": {
      "dimensions": [
        {
          "key": "gateway",
          "value": "Test Gateway"
        },
        {
          "key": "probe",
          "value": "infra-probe"
        },
        {
          "key": "managedEntity",
          "value": "app-server"
        }
      ]
    }
  },
  "commandGroup": "snooze",
  "skip": 0,
  "limit": 100
}

Response Copied

Success (200 OK):

{
  "commands": [
    {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/geneos",
          "name": "Test Gateway"
        },
        "name": "/SNOOZE:manual"
      },
      "displayName": "Manual",
      "commandGroups": [
        "snooze"
      ],
      "categories": [
        "Snooze",
        "Manual"
      ]
    }
  ],
  "hasMore": false
}

Register or replace all commands for a service Copied

Endpoint: POST /commands/register
Description: Register or replace all commands for a service.

This is the primary registration endpoint used by command providers such as Geneos Gateways. All commands must share the same service definition. Commands present in the request are added or updated; commands previously registered for the service but omitted from a complete (final) request are deleted. Supplying an empty commands list on a complete request deletes all commands for the service.

Requests can be batched by setting isIncomplete to true. The API then returns a registrationToken that must be supplied on subsequent batches. The final batch must include the token with isIncomplete set to false.

Set supportsPermissions to true to enable fine-grained command permissions for the service. After registration completes, publish permissions with PutCommandPermissions. When supportsPermissions is true and no permissions are published, users are denied access to the service’s commands (default-deny).

Validation mode Copied

Use validationMode to control how invalid commands are handled:

Batched registration and validation Copied

When using isIncomplete and registrationToken with lenient validation:

Request Copied

Parameter Type Location Required Description
service Service Body Yes The service that owns the commands being registered.
commands array of Command Body Yes The commands to register. All commands must be for the same service. An empty list on a complete request deletes all commands for the service.
filters array of CommandTargetFilter Body No Optional service-level filters that apply to all commands for this service.
isIncomplete boolean Body No When true, this request is a partial batch and a registrationToken is returned for subsequent batches. Defaults to false.
registrationToken string Body No Token returned from a previous incomplete registration batch. Required for subsequent batches of the same registration.
supportsPermissions boolean Body No When true, enables fine-grained command permissions for this service. Defaults to false.
validationMode enum Body No How invalid commands are handled. Defaults to VALIDATION_MODE_STRICT. Use VALIDATION_MODE_LENIENT to register valid commands and return rejected ones in rejected.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "filters": [
    {
      "entity": {
        "entityFilter": {
          "dimensions": {
            "dimensions": {
              "probe": "Test Probe",
              "managedEntity": "Test ME"
            }
          }
        }
      }
    }
  ],
  "commands": [
    {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/geneos",
          "name": "Test Gateway"
        },
        "name": "/SNOOZE:manual"
      },
      "displayName": "Manual",
      "commandGroups": ["snooze"],
      "categories": ["Snooze", "Manual"],
      "targets": [
        {
          "entity": {
            "entityFilter": {
              "dimensions": {
                "dimensions": {
                  "probe": "Test Probe",
                  "managedEntity": "Test ME"
                }
              }
            }
          }
        }
      ]
    }
  ]
}

Response Copied

Success (200 OK):

{
  "added": 2,
  "updated": 1,
  "deleted": 1,
  "rejected": [
    {
      "index": 1,
      "name": "",
      "reason": "Command at index '1' must have a name"
    }
  ]
}

In VALIDATION_MODE_STRICT, rejected is omitted. In VALIDATION_MODE_LENIENT, rejected is present (and may be an empty list). For incomplete batches, the response also includes registrationToken.

Retrieve a registered command service Copied

Endpoint: GET /commands/service
Description: Retrieve a registered command service.

Returns metadata for a registered command service (for example, a Geneos Gateway), including its service-level filters, registered command names, and whether fine-grained command permissions are enabled with supportsPermissions.

Request Copied

Parameter Type Location Required Description
namespace string Query Yes The service namespace.
name string Query Yes The service name.

Example Request Copied

GET /commands/service?namespace=namespace&name=name

Response Copied

Success (200 OK):

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "commands": [
    "/SNOOZE:manual",
    "/SNOOZE:unsnooze"
  ],
  "supportsPermissions": true
}

Command Execution Copied

The Command Execution endpoints manage the lifecycle of command execution, from triggering commands to monitoring status, output, history, cancellation, and time-to-live updates.

Submit a command for execution Copied

Endpoint: POST /commands/execution
Description: Submit a command for execution.

Submits a command for execution. Queues a registered command for execution against the supplied entity, metric, or log target. The owning command service (for example, a Geneos Gateway) claims and runs the command, then reports status via the command execution status endpoints.

When the service has supportsPermissions enabled, the caller must be permitted by that service’s command permissions. Otherwise, the request fails with permission denied. IAM resource scopes on the command definition (if any) are also enforced.

Request Copied

Parameter Type Location Required Description
command ExecutingCommand Body Yes The command instance to execute.
command.id CommandId Body Yes Identity of the registered command to execute (service + command name).
command.target CommandTarget Body Yes Entity, metric, or log target against which the command should run.
command.arguments array of CommandArgumentEntry Body No Argument values required by the command definition. Required only when the command definition marks specific arguments as required.
command.executionGroup string Body No Optional execution group used to correlate related command executions.

Example Request Copied

{
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "gateway",
            "value": "Test Gateway"
          },
          {
            "key": "probe",
            "value": "infra-probe"
          },
          {
            "key": "managedEntity",
            "value": "app-server"
          }
        ]
      }
    }
  }
}

Response Copied

Success (200 OK):

{
  "execId": "2",
  "status": {
    "state": "TRIGGERED"
  }
}

Clear historical command execution entries Copied

Endpoint: DELETE /commands/execution/history
Description: Clear historical command execution entries for a user.

Request Copied

Parameter Type Location Required Description
from string (date-time) Query No Clear commands that terminated after this point in time.
to string (date-time) Query No Clear commands that terminated before this point in time. Defaults to the current time if not supplied.

Example Request Copied

DELETE /commands/execution/history?from=from&to=to

Response Copied

Success (200 OK):

{}

Returns all triggered commands for a service Copied

Endpoint: POST /commands/execution/query
Description: Returns commands that have been triggered for the supplied service. A FAILED_PRECONDITION error is returned if the supplied service is not recognized by the app.

Request Copied

Parameter Type Location Required Description
service Service Body No If set, only returns the commands destined for the supplied service.
limit integer Body No The maximum number of commands to return.
skip integer Body No The number of results to skip.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/obcerv/app",
    "name": "obcerv-app-notifications"
  },
  "limit": 20,
  "skip": 0
}

Response Copied

Success (200 OK):

{
  "commandEntries": [
    {
      "commandExecution": {
        "execId": "1",
        "command": {
          "id": {
            "service": {
              "namespace": "itrsgroup.com/obcerv/app",
              "name": "obcerv-app-notifications"
            },
            "name": "entity:notify"
          },
          "arguments": {
            "Configuration": {
              "string": "1"
            }
          },
          "target": {
            "entity": {
              "dimensions": [
                {
                  "key": "node",
                  "value": "itrsgroup.node.101.com"
                }
              ]
            }
          }
        },
        "triggeredAt": "2024-06-15T19:32:49.552871Z"
      }
    },
    {
      "commandCancellation": {
        "execId": "2",
        "cancelledBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        },
        "cancelledAt": "2024-06-15T19:33:44.553749Z"
      }
    }
  ]
}

Update the status of a command Copied

Endpoint: PUT /commands/execution/status
Description: Update the status of a command.

Request Copied

Parameter Type Location Required Description
claim ClaimCommand Body No Claim a triggered command for execution. One of claim, renewClaim, fail, or output is required.
renewClaim RenewClaimCommand Body No Renew an existing claim on a command.
fail FailCommand Body No Mark a claimed command as failed.
output SendCommandOutput Body No Send command output and optionally complete the command.

Example Request Copied

{
  "claim": {
    "claimFor": "300s",
    "execId": "1"
  }
}

Response Copied

Success (200 OK):

{
  "execId": "20",
  "claimId": "2",
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  }
}

Query the status of one or more commands Copied

Endpoint: POST /commands/execution/status/query
Description: Query the status of one or more commands.

Request Copied

Parameter Type Location Required Description
from string (date-time) Body No Only return commands triggered from this time. If omitted, all commands are returned.
skip integer Body No The number of entries to skip.
limit integer Body No The maximum number of entries to return.
stateFilter array of enum Body No Only return command status entries that match any of the supplied lifecycle states.

Example Request Copied

{
  "from": "2024-06-15T05:58:31.013397Z",
  "skip": 0,
  "limit": 100,
  "stateFilter": [
    "COMMAND_LIFECYCLE_COMPLETED"
  ]
}

Response Copied

Success (200 OK):

{
  "commandStatusEntries": [
    {
      "execId": "1",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_COMPLETED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "completedAt": "2024-07-23T09:13:34.062745Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        }
      }
    },
    {
      "execId": "2",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_FAILED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        },
        "failureInfo": {
          "failedAt": "2024-07-23T09:13:34.063762Z",
          "code": "PERMISSION_DENIED",
          "message": "Insufficient permissions"
        }
      }
    },
    {
      "execId": "3",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_CANCELLED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        },
        "cancellationInfo": {
          "cancelledAt": "2024-07-23T09:13:34.064444Z",
          "reason": "Cancelled by user 'admin'"
        }
      }
    }
  ],
  "hasMore": false,
  "numEntries": 1024
}

Subscribe to triggered command status updates Copied

Endpoint: POST /commands/execution/status/subscribe
Description: Subscribe to triggered command status updates.

Request Copied

Parameter Type Location Required Description
from string (date-time) Body No Subscribe from a point in the past. Defaults to the time of the request.
limit integer Body No Limits the number of completed commands returned. In-progress commands are always returned.

Example Request Copied

{
  "from": "2024-06-15T05:58:31.013397Z",
  "limit": 100
}

Response Copied

Success (200 OK):

Content-Type: text/event-stream

id: 1
event: message
data: {
  "statusEntry": {
    "execId": "1",
    "command": {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/obcerv/app",
          "name": "obcerv-app-notifications"
        },
        "name": "entity:notify"
      },
      "arguments": {
        "Configuration": {
          "string": "1"
        }
      },
      "target": {
        "entity": {
          "dimensions": [
            {
              "key": "node",
              "value": "itrsgroup.node.101.com"
            }
          ]
        }
      }
    },
    "status": {
      "state": "COMMAND_LIFECYCLE_FAILED",
      "triggerInfo": {
        "triggeredAt": "2024-06-15T19:48:47.549334Z",
        "triggeredBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        }
      },
      "claimInfo": {
        "claimedAt": "2024-06-15T19:48:57.551984Z",
        "claimExpiresAt": "2024-06-15T19:54:17.551994Z"
      },
      "outputInfo": {
        "lastUpdatedAt": "2024-06-15T19:49:07.554677Z"
      },
      "failureInfo": {
        "failedAt": "2024-06-15T19:49:12.555704Z",
        "code": "PERMISSION_DENIED",
        "message": "Insufficient permissions"
      }
    }
  }
}

Subscribe to triggered commands for a service Copied

Endpoint: POST /commands/execution/subscribe
Description: Subscribe to triggered commands for a service. A FAILED_PRECONDITION error is returned if the supplied service is not recognized by the app.

Request Copied

Parameter Type Location Required Description
service Service Body Yes Only returns the commands destined for the supplied service.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Middleware Gateway"
  }
}

Response Copied

Success (200 OK):

Content-Type: text/event-stream

id: 1
event: message
data: {
  "commandExecution": {
    "execId": "1",
    "command": {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/obcerv/app",
          "name": "obcerv-app-notifications"
        },
        "name": "entity:notify"
      },
      "arguments": [
        {
          "key": "Configuration",
          "argument": {
            "string": "1"
          }
        }
      ],
      "target": {
        "entity": {
          "dimensions": [
            {
              "key": "node",
              "value": "itrsgroup.node.101.com"
            }
          ]
        }
      }
    },
    "triggeredAt": "2024-07-23T09:12:39.065404Z"
  }
}

Cancel a command execution Copied

Endpoint: DELETE /commands/execution/{execId}
Description: Cancel a command execution. Only applies to commands that support cancellation.

Request Copied

Parameter Type Location Required Description
execId string Path Yes A unique identifier for this command instance.
reason string Query No The reason for the cancellation.

Example Request Copied

DELETE /commands/execution/123?reason=reason

Response Copied

Success (200 OK):

{
  "execId": "2",
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  }
}

Clear a historical command execution entry Copied

Endpoint: DELETE /commands/execution/{execId}/history
Description: Clear a historical command execution entry.

Request Copied

Parameter Type Location Required Description
execId string Path Yes The command execution ID.

Example Request Copied

DELETE /commands/execution/123/history

Response Copied

Success (200 OK):

{}

Subscribe to status updates for a specific command execution ID Copied

Endpoint: POST /commands/execution/{execId}/output/subscribe
Description: Subscribe to status updates and output changes for a specific command execution ID.

Request Copied

Parameter Type Location Required Description
execId string Path Yes The command execution ID.

Example Request Copied

POST /commands/execution/123/output/subscribe

Response Copied

Success (200 OK):

Content-Type: text/event-stream

id: 1
event: message
data: {
  "entry": {
    "status": {
      "state": "COMMAND_LIFECYCLE_FAILED",
      "triggerInfo": {
        "triggeredAt": "2024-06-15T19:48:47.549334Z",
        "triggeredBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        }
      },
      "claimInfo": {
        "claimedAt": "2024-06-15T19:48:57.551984Z",
        "claimExpiresAt": "2024-06-15T19:54:17.551994Z"
      },
      "outputInfo": {
        "lastUpdatedAt": "2024-06-15T19:49:07.554677Z"
      },
      "failureInfo": {
        "failedAt": "2024-06-15T19:49:12.555704Z",
        "code": "PERMISSION_DENIED",
        "message": "Insufficient permissions"
      }
    }
  },
  "outputStreams": {
    "outputStream": {
      "streamOperation": "STREAM_OPERATION_APPEND",
      "contentType": "text/plain",
      "output": "INFO  - Started"
    },
    "execStream": {
      "streamOperation": "STREAM_OPERATION_REPLACE",
      "contentType": "text/plain",
      "output": "Command 'tail -f app.log' returned exit code 0"
    }
  },
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/obcerv/app",
        "name": "obcerv-app-notifications"
      },
      "name": "entity:notify"
    },
    "arguments": [
      {
        "key": "Configuration",
        "argument": {
          "string": "1"
        }
      }
    ],
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "node",
            "value": "itrsgroup.node.101.com"
          }
        ]
      }
    }
  }
}

Extends the time-to-live of an executing command Copied

Endpoint: POST /commands/execution/{execId}/time-to-live
Description: Extends the time-to-live of an executing command.

Only commands that have been claimed can have their time-to-live extended. Commands may still be cancelled regardless of their time to live if:

Request Copied

Parameter Type Location Required Description
execId string Path Yes The command execution ID.
execId string Body Yes The command execution ID.
extendBy string Body Yes The amount of time to extend the command’s time to live by. Added to the command’s end-of-life time, not the current time.

Example Request Copied

{
  "execId": "1",
  "extendBy": "3600s"
}

Response Copied

Success (200 OK):

{
  "endOfLife": "2024-06-15T05:58:31.013397Z"
}

Permissions Copied

The Permissions endpoints manage fine-grained role-based command permissions for registered command services.

Replace the full set of command permissions for a service Copied

Endpoint: PUT /commands/permissions
Description: Replace the full set of command permissions for a service.

This endpoint configures which ITRS Analytics roles may view and execute commands registered by a command service (for example, a Geneos Gateway). The supplied permissions list fully replaces any previously stored permissions for that service. The service must already be registered with supportsPermissions set to true. See the Register commands endpoint for more information.

Each permission entry grants access for one or more roles to commands matching commandNamePatterns (Geneos-style wildcards such as /SNOOZE:*), optionally further restricted by commandGroupNames and targets (entity/metric scope).

Request Copied

Parameter Type Location Required Description
service Service Body Yes The command service whose permissions are being replaced.
permissions array of CommandPermission Body Yes The complete permission list for the service. Replaces any existing entries.
permissions[].name string Body Yes Unique permission name within the command service.
permissions[].roles array of string Body Yes IAX realm roles this permission applies to.
permissions[].targets array of CommandPermissionTarget Body Yes Entity/metric scopes for this permission. Use [{}] when not restricted by target.
permissions[].commandNamePatterns array of string Body Yes Command name patterns matched against Command.id.name (for example /SNOOZE:*).
permissions[].commandGroupNames array of string Body No Optional command group names that further restrict this permission.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "permissions": [
    {
      "name": "allow-snooze",
      "roles": [
        "operator"
      ],
      "targets": [
        {}
      ],
      "commandGroupNames": [
        "snooze"
      ],
      "commandNamePatterns": [
        "/SNOOZE:*"
      ]
    }
  ]
}

Response Copied

Success (200 OK):

{}

Delete command permissions for a service Copied

Endpoint: DELETE /commands/permissions
Description: Delete command permissions for a service.

Parameters are supplied as query string fields consistent with DeleteCommand. When permissionName is omitted, all permissions for the service are deleted. When set, only the named permission is removed.

Request Copied

Parameter Type Location Required Description
serviceNamespace string Query Yes The service namespace of the command service.
serviceName string Query Yes The service name.
permissionName string Query No If omitted, all permissions for the service are deleted. If set, only the named permission is removed.

Example Request Copied

DELETE /commands/permissions?serviceNamespace=serviceNamespace&serviceName=serviceName&permissionName=permissionName

Response Copied

Success (200 OK):

{}

Query command permissions for a service Copied

Endpoint: POST /commands/permissions/query
Description: Query command permissions for a service.

This endpoint returns the fine-grained command permissions currently configured for command services. Use it to inspect permissions published by a Geneos Gateway (or other command providers) after calling PutCommandPermissions or RegisterCommands. Results can be filtered by service or permission name, and paginated with skip / limit. hasMore on the response indicates additional pages.

Request Copied

Parameter Type Location Required Description
service Service Body No When set, only permissions for this command service are returned. Omit to query across all registered services.
name string Body No When set, only the permission with this name is returned.
skip integer Body No Number of matching permissions to skip before returning results. Defaults to 0.
limit integer Body No Maximum number of permissions to return. Defaults to 100.

Example Request Copied

{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "skip": 0,
  "limit": 100
}

Response Copied

Success (200 OK):

{
  "permissions": [
    {
      "name": "allow-snooze",
      "roles": [
        "operator"
      ],
      "targets": [
        {}
      ],
      "commandGroupNames": [
        "snooze"
      ],
      "commandNamePatterns": [
        "/SNOOZE:*"
      ]
    }
  ],
  "hasMore": false
}

Configuration Copied

The Configuration endpoints expose current application configuration settings.

Returns the supported application’s current configuration settings Copied

Endpoint: GET /config
Description: Returns the supported application’s current configuration settings.

Request Copied

No parameters required.

Example Request Copied

GET /config

Response Copied

Success (200 OK):

{
  "config": {
    "rpcTimeout": "300s",
    "serviceLivenessTimeout": "300s",
    "entityCacheTtl": "300s",
    "commandRegistration": {
      "housekeepingInterval": "300s",
      "tokenTtl": "300s"
    },
    "commandExecution": {
      "claimTimeout": "300s",
      "retentionPeriod": "300s",
      "housekeepingInterval": "300s",
      "persistenceEnabled": false,
      "persistencePath": "/data/commands/rocksdb",
      "maxEntries": 10000,
      "maxHistory": 100,
      "timeToLive": "300s",
      "statsPollInterval": "300s",
      "averageEntrySizeBytes": 16384,
      "averageHistoricalEntrySizeBytes": 65536
    }
  }
}

API Information Copied

The Info endpoints expose API metadata such as supported versions.

Returns the supported API versions Copied

Endpoint: GET /versions
Description: Returns the supported API versions.

Request Copied

No parameters required.

Example Request Copied

GET /versions

Response Copied

Success (200 OK):

{
  "versions": [
    "v1",
    "v2"
  ]
}

Schemas Copied

The following request and response models are defined by the API (listed in alphabetical order).

Any Copied

Field Type Required Description
value GoogleProtobufAny No
yaml string No
{
  "value": {
    "@type": "string"
  },
  "yaml": "string"
}

ArgumentType Copied

Option Type Description
string StringType One possible shape for this schema
float FloatType One possible shape for this schema
integer IntegerType One possible shape for this schema
duration DurationType One possible shape for this schema
timestamp TimestampType One possible shape for this schema
date DateType One possible shape for this schema
timeOfDay TimeOfDayType One possible shape for this schema
options UserInputOptions One possible shape for this schema
boolean BooleanType One possible shape for this schema
{
  "string": {
    "default": "string",
    "minLength": 0,
    "maxLength": 0,
    "isPassword": false,
    "isMultiLine": false
  }
}

BooleanType Copied

Field Type Required Description
default boolean No The default boolean.
{
  "default": false
}

CancelCommandExecutionResponse Copied

Field Type Required Description
execId string Yes A unique identifier for this command instance.
status CommandStatus Yes The command status.
{
  "execId": "2",
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  }
}

ClaimCommand Copied

Field Type Required Description
claimFor string Yes The duration of the claim for this command. If the claim is not renewed and the command has not been updated within this time, the command will be considered failed due to a timeout.
comment string No A human readable comment.
execId string Yes The command execution ID. If the command has already been claimed the call will fail.
{
  "claimFor": "300s",
  "execId": "string",
  "comment": "string"
}

ClearCommandExecutionEntryResponse Copied

Type: object

{}

ClearCommandExecutionHistoryResponse Copied

Type: object

{}

Command Copied

Field Type Required Description
arguments array of CommandArgumentTypeEntry No The command’s arguments.
categories array of string No The command’s categories. This is used for filtering and displaying similar commands together.
commandGroups array of string No Optional group names for this command. Used to group related commands and to scope command permissions. A command may belong to more than one group.
description string No The command’s description.
displayName string No The command’s display name.
id CommandId Yes
resources array of string No A list of resources that restrict users from viewing or executing this command. Each resource must map to an IAM resource with scopes ‘view’ and ’execute’. Groups of users (policies) may be assigned to a resource and its scopes. The app will only show commands to users that have access to the ‘view’ scope of at least one of the supplied resources. The app will only allow users to execute commands that have access to the ’execute’ scope of at least one of the supplied resources. The scopes are mutually exclusive. Having access to the ’execute’ scope does not imply access to the ‘view’ scope. No restrictions are applied if the resources list is empty (default)
targets array of CommandTargetFilter Yes The targets the command applies to.
{
  "id": {
    "service": {
      "namespace": "itrsgroup.com/geneos",
      "name": "Middleware Gateway"
    },
    "name": "snooze:manual"
  },
  "targets": [
    {
      "entity": {
        "entityFilter": {
          "expression": {
            "set": {
              "namespace": "itrsgroup.com/system",
              "name": "severity",
              "values": [
                "critical",
                "warn"
              ]
            }
          }
        }
      }
    }
  ],
  "displayName": "string",
  "resources": [
    "string"
  ],
  "categories": [
    "string"
  ],
  "arguments": [
    {
      "key": "string",
      "argument": {
        "required": false,
        "name": "string",
        "description": "string",
        "type": {
          "string": {
            "default": "string",
            "minLength": 0,
            "maxLength": 0,
            "isPassword": false,
            "isMultiLine": false
          }
        }
      }
    }
  ],
  "description": "string",
  "commandGroups": [
    "snooze"
  ]
}

CommandArgument Copied

Option Type Description
string string One possible shape for this schema
boolean boolean One possible shape for this schema
float number (float) One possible shape for this schema
integer integer (int32) One possible shape for this schema
duration string One possible shape for this schema
timestamp string (date-time) One possible shape for this schema
date ZonedDate One possible shape for this schema
timeOfDay ZonedTimeOfDay One possible shape for this schema
{
  "string": "string"
}

CommandArgumentEntry Copied

Field Type Required Description
argument CommandArgument Yes
key string Yes The unique command argument key
{
  "key": "string",
  "argument": {
    "string": "string"
  }
}

CommandArgumentType Copied

Field Type Required Description
description string No A human readable description of the argument.
name string Yes A human readable name of the argument.
required boolean No Whether or not this argument must be supplied.
type ArgumentType Yes The argument type.
{
  "required": false,
  "name": "string",
  "description": "string",
  "type": {
    "string": {
      "default": "string",
      "minLength": 0,
      "maxLength": 0,
      "isPassword": false,
      "isMultiLine": false
    }
  }
}

CommandArgumentTypeEntry Copied

Field Type Required Description
argument CommandArgumentType Yes
key string Yes A unique key identifying this argument.
{
  "key": "string",
  "argument": {
    "required": false,
    "name": "string",
    "description": "string",
    "type": {
      "string": {
        "default": "string",
        "minLength": 0,
        "maxLength": 0,
        "isPassword": false,
        "isMultiLine": false
      }
    }
  }
}

CommandCancellationRequest Copied

Field Type Required Description
cancelledAt string (date-time) Yes The cancellation timestamp.
cancelledBy User Yes The user that triggered the command.
execId string Yes The command execution ID.
reason string No The cancellation reason.
{
  "execId": "20",
  "cancelledBy": {
    "username": "jbloggs",
    "displayName": "Joe Bloggs",
    "roles": [
      "admin"
    ],
    "groups": [
      "engineering-managers"
    ],
    "permissions": {
      "obcerv-app-commands": {
        "scopes": [
          "view",
          "execute"
        ]
      }
    }
  },
  "cancelledAt": "2024-06-15T05:58:31.013397Z",
  "reason": "string"
}

CommandExecutionConfig Copied

Field Type Required Description
averageEntrySizeBytes integer (int32) No The estimated average command entry size in bytes. The actual value is emitted as a metric named exec_cmd_avg_val_size.
averageHistoricalEntrySizeBytes integer (int32) No The estimated average command entry size in bytes. The actual value is emitted as a metric named exec_cmd_history_avg_val_size.
claimTimeout string No Maximum amount of time to wait for a triggered command to be claimed.
housekeepingInterval string No How often to perform housekeeping on the internal command cache. This can be a computationally expensive operation.
maxEntries integer (int32) No The maximum allowable number of command execution entries. This is a soft limit and is enforced by internal housekeeping tasks.
maxHistory integer (int32) No The maximum number of historical entries per command execution. This is a soft limit and is enforced by internal housekeeping tasks.
persistenceEnabled boolean No Whether to persist command execution history across application restarts, re-installs and upgrades.
persistencePath string No The path to store currently executing and previously executed commands and their history. Only required if persistence is enabled.
retentionPeriod string No The maximum amount of time to keep executed commands and their history.
statsPollInterval string No The internal cache statistics poll interval. The operations involved in calculating the cache statistics are expensive and must not be done very often.
timeToLive string No The time-to-live duration of an executing command. This also defines the maximum amount a user can extend the command’s end of life timestamp by. This is a soft limit and is enforced by internal housekeeping tasks.
{
  "claimTimeout": "300s",
  "retentionPeriod": "300s",
  "housekeepingInterval": "300s",
  "persistenceEnabled": false,
  "persistencePath": "/data/commands/rocksdb",
  "maxEntries": 10000,
  "maxHistory": 100,
  "timeToLive": "300s",
  "statsPollInterval": "300s",
  "averageEntrySizeBytes": 16384,
  "averageHistoricalEntrySizeBytes": 65536
}

CommandExecutionEntry Copied

Field Type Required Description
command ExecutingCommand Yes The executing command.
displayName string No The command’s display name.
outputStreams CommandOutputStreams No The command output if the command executor supplied any.
status CommandStatus Yes The executing command status.
{
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  },
  "outputStreams": {
    "outputStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    },
    "errorStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    },
    "execStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    }
  },
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "gateway",
            "value": "Test Gateway"
          },
          {
            "key": "probe",
            "value": "infra-probe"
          },
          {
            "key": "managedEntity",
            "value": "app-server"
          }
        ]
      }
    }
  },
  "displayName": "Snooze"
}

CommandExecutionRequest Copied

Field Type Required Description
command ExecutingCommand Yes The executing command.
execId string Yes The command execution ID.
triggeredAt string (date-time) Yes The point in time the command was triggered.
triggeredBy User Yes The user that triggered the command.
{
  "execId": "20",
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "gateway",
            "value": "Test Gateway"
          },
          {
            "key": "probe",
            "value": "infra-probe"
          },
          {
            "key": "managedEntity",
            "value": "app-server"
          }
        ]
      }
    }
  },
  "triggeredBy": {
    "username": "jbloggs",
    "displayName": "Joe Bloggs",
    "roles": [
      "admin"
    ],
    "groups": [
      "engineering-managers"
    ],
    "permissions": {
      "obcerv-app-commands": {
        "scopes": [
          "view",
          "execute"
        ]
      }
    }
  },
  "triggeredAt": "2024-06-15T05:58:31.013397Z"
}

CommandId Copied

Field Type Required Description
name string Yes The command name.
service Service Yes The service the command belongs to. It forms part of the unique identifier of a command.
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Middleware Gateway"
  },
  "name": "snooze:manual"
}

CommandOutputStreams Copied

Field Type Required Description
errorStream CommandStream No The command error stream (equivalent to unix stderr).
execStream CommandStream No The command execution output. Usually used for a high level summary of the command execution.
outputStream CommandStream No The command output stream (equivalent to unix stdout).
{
  "outputStream": {
    "streamOperation": 0,
    "contentType": "string",
    "output": "string"
  },
  "errorStream": {
    "streamOperation": 0,
    "contentType": "string",
    "output": "string"
  },
  "execStream": {
    "streamOperation": 0,
    "contentType": "string",
    "output": "string"
  }
}

CommandPermission Copied

A fine-grained permission for a command service. Grants one or more IAX roles access to commands whose names match the configured patterns, optionally restricted by command group and entity/metric targets.

Required: name, roles, targets, commandNamePatterns. Optional: commandGroupNames.

Command name patterns use Geneos-style wildcards where ‘*’ matches zero or more characters (for example /SNOOZE:* matches /SNOOZE:manual and /SNOOZE:unsnooze).

Field Type Required Description
commandGroupNames array of string No Optional command group names that further restrict this permission. When non-empty, only commands that belong to at least one of these groups (via commandGroups) are permitted.
commandNamePatterns array of string Yes Command name patterns matched against Command.id.name. The wildcard character ‘*’ matches zero or more characters (for example /SNOOZE:*). Patterns are consistent with Geneos command permission names.
name string Yes Unique permission name within the command service. Used when querying or deleting a single permission.
roles array of string Yes IAX realm roles this permission applies to. A user must hold at least one of these roles for the permission to match. Users with the IAX admin role bypass permission matching entirely.
targets array of CommandPermissionTarget Yes One or more entity/metric scopes for this permission. Include an empty object [{}] when the permission should apply regardless of command target.
{
  "name": "allow-snooze",
  "roles": [
    "operator"
  ],
  "targets": [
    {}
  ],
  "commandGroupNames": [
    "snooze"
  ],
  "commandNamePatterns": [
    "/SNOOZE:*"
  ]
}

CommandPermissionTarget Copied

Scopes a command permission to entities and optionally a metric. An empty target (no entityFilter and no metric) means the permission is not restricted by target.

Field Type Required Description
entityFilter EntityFilter No
metric NamespacedName No If set, the permission applies only when the command target metric matches. Unset namespace or name fields act as wildcards.
{}

CommandRegistrationConfig Copied

Field Type Required Description
housekeepingInterval string No How often to perform housekeeping on the internal command registration module.
tokenTtl string No Sets the duration of the tokens returned by the command registration endpoint.
{
  "housekeepingInterval": "300s",
  "tokenTtl": "300s"
}

CommandRegistrationToken Copied

Field Type Required Description
expiry string (date-time) Yes If the client does not complete the command registration prior this timestamp then the token is invalidated. This timestamp is updated after each partial client request.
token string Yes The command registration token that is unique to the registration request. It must be supplied in subsequent requests to the RegisterCommands endpoint. If a registration request without a token is received for the same service, any existing token for that service is invalidated.
{
  "token": "f47ac10b58cc4372a5670e02b2c3d479",
  "expiry": "2024-06-15T05:58:31.013397Z"
}

CommandStatus Copied

Field Type Required Description
cancellationInfo CommandStatus_CommandCancellationInfo No Information regards the command’s cancellation. Only present if the command was cancelled.
claimInfo CommandStatus_CommandClaimInfo No Information regarding the command’s claim. Only present the command has been claimed.
endOfLife string (date-time) Yes The timestamp after which the command will be cancelled. This can be extended by the user that triggered the command by sending a time-to-live extension request.
failureInfo CommandStatus_CommandFailureInfo No Information regarding the command’s failure. Only present if the command has failed.
outputInfo CommandStatus_CommandOutputInfo No Information regarding the command’s output. Only present if the command has output.
state integer (enum) Yes The current command execution lifecycle state.
triggerInfo CommandStatus_CommandTriggerInfo No Information regarding the triggering of a command.
{
  "state": "COMMAND_LIFECYCLE_CANCELLED",
  "triggerInfo": {
    "triggeredAt": "2024-06-15T19:51:17.437128Z",
    "triggeredBy": {
      "username": "jbloggs",
      "displayName": "Joe Bloggs",
      "roles": [
        "admin"
      ],
      "groups": [
        "engineering-managers"
      ]
    }
  },
  "claimInfo": {
    "claimedAt": "2024-06-15T19:51:27.439549Z",
    "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
  },
  "outputInfo": {
    "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
  },
  "cancellationInfo": {
    "cancelledAt": "2024-06-15T19:51:42.444117Z",
    "reason": "Cancelled by user 'admin'"
  }
}

CommandStatusEntry Copied

Field Type Required Description
command ExecutingCommand Yes The executing command.
displayName string No The command’s display name.
execId string Yes The command execution ID.
status CommandStatus Yes The executing command status.
{
  "execId": "20",
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "gateway",
            "value": "Test Gateway"
          },
          {
            "key": "probe",
            "value": "infra-probe"
          },
          {
            "key": "managedEntity",
            "value": "app-server"
          }
        ]
      }
    }
  },
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  },
  "displayName": "Snooze"
}

CommandStatus_CommandCancellationInfo Copied

Field Type Required Description
cancelledAt string (date-time) Yes The timestamp at the point in time the command was cancelled.
reason string Yes The command cancellation reason.
{
  "cancelledAt": "2024-06-15T05:58:31.013397Z",
  "reason": "string"
}

CommandStatus_CommandClaimInfo Copied

Field Type Required Description
claimExpiresAt string (date-time) Yes The point in time the claim expires.
claimedAt string (date-time) Yes The timestamp at the point in time the command was claimed or had its claim renewed.
comment string No A comment related to the claim.
{
  "claimedAt": "2024-06-15T05:58:31.013397Z",
  "comment": "string",
  "claimExpiresAt": "2024-06-15T05:58:31.013397Z"
}

CommandStatus_CommandFailureInfo Copied

Field Type Required Description
code integer (enum) Yes The failure reason and status code. e.g. PERMISSION_DENIED: User ‘chris’ does not have sufficient permissions to execute command ‘Restart Pod’.
failedAt string (date-time) Yes The timestamp at the point in time the command failed to execute.
message string Yes The error message.
{
  "failedAt": "2024-06-15T05:58:31.013397Z",
  "code": 0,
  "message": "string"
}

CommandStatus_CommandOutputInfo Copied

Field Type Required Description
completedAt string (date-time) Yes The timestamp at the point in time the command completed execution.
hasErrorStream boolean Yes Whether this status update has any error output.
hasExecStream boolean Yes Whether this status update has any execution output.
hasOutputStream boolean Yes Whether this status update has any output.
lastUpdatedAt string (date-time) Yes The timestamp at the point in time the command output was last updated.
{
  "lastUpdatedAt": "2024-06-15T05:58:31.013397Z",
  "completedAt": "2024-06-15T05:58:31.013397Z",
  "hasOutputStream": false,
  "hasExecStream": false,
  "hasErrorStream": false
}

CommandStatus_CommandTriggerInfo Copied

Field Type Required Description
triggeredAt string (date-time) Yes The point in time the command was triggered.
triggeredBy User Yes The user that triggered the command.
{
  "triggeredAt": "2024-06-15T05:58:31.013397Z",
  "triggeredBy": {
    "username": "jbloggs",
    "displayName": "Joe Bloggs",
    "roles": [
      "admin"
    ],
    "groups": [
      "engineering-managers"
    ],
    "permissions": {
      "obcerv-app-commands": {
        "scopes": [
          "view",
          "execute"
        ]
      }
    }
  }
}

CommandStream Copied

Field Type Required Description
contentType string No The content type. Defaults to ’text/plain’. Must be a valid MIME Type as defined by https://tools.ietf.org/html/rfc2045 and https://tools.ietf.org/html/rfc2046
output string No The command output.
streamOperation integer (enum) No The stream operation. Must be set if the command has output.
{
  "streamOperation": 0,
  "contentType": "string",
  "output": "string"
}

CommandTarget Copied

The target of the command.

Option Type Description
metric CommandTarget_Metric One possible shape for this schema
log CommandTarget_Log One possible shape for this schema
entity CommandTarget_Entity One possible shape for this schema
{
  "metric": {
    "dimensions": [
      {
        "key": "string",
        "value": "string"
      }
    ],
    "metric": {
      "namespace": "string",
      "name": "string"
    }
  }
}

CommandTargetFilter Copied

A filter that determines the targets the command applies to. Must be set to one of entity, metric, log, or entity group.

Option Type Description
entity EntityTargetFilter One possible shape for this schema
metric MetricTargetFilter One possible shape for this schema
log LogTargetFilter One possible shape for this schema
{
  "entity": {
    "entityFilter": {
      "expression": {
        "set": {
          "namespace": "itrsgroup.com/system",
          "name": "severity",
          "values": [
            "critical",
            "warn"
          ]
        }
      }
    }
  }
}

CommandTarget_Entity Copied

Field Type Required Description
dimensions array of Dimension Yes Only returns commands that apply to the entity with the supplied dimensions.
{
  "dimensions": [
    {
      "key": "string",
      "value": "string"
    }
  ]
}

CommandTarget_Log Copied

Field Type Required Description
dimensions array of Dimension Yes Only returns commands that apply to the entity with the supplied dimensions.
log NamespacedName Yes
{
  "dimensions": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "log": {
    "namespace": "string",
    "name": "string"
  }
}

CommandTarget_Metric Copied

Field Type Required Description
dimensions array of Dimension Yes Only returns commands that apply to the entity with the supplied dimensions.
metric NamespacedName Yes
{
  "dimensions": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "metric": {
    "namespace": "string",
    "name": "string"
  }
}

CommandsServiceConfig Copied

Field Type Required Description
commandExecution CommandExecutionConfig No Command execution settings.
commandRegistration CommandRegistrationConfig No Command registration settings.
entityCacheTtl string No How long to cache entities fetched from the platform to evaluate command target filters against. This should be short enough such that changes to the entities are reflected in the app within a reasonable amount of time. It should be long enough for a user to interact with the UI and discover/search commands for an entity or metric.
rpcTimeout string No The maximum amount of time to wait for RPCs to platform services to complete.
serviceLivenessTimeout string No Maximum amount of time to wait for a service to interact with the application before failing the liveness check and all its commands being removed.
{
  "rpcTimeout": "300s",
  "serviceLivenessTimeout": "300s",
  "entityCacheTtl": "300s",
  "commandRegistration": {
    "housekeepingInterval": "300s",
    "tokenTtl": "300s"
  },
  "commandExecution": {
    "claimTimeout": "300s",
    "retentionPeriod": "300s",
    "housekeepingInterval": "300s",
    "persistenceEnabled": false,
    "persistencePath": "/data/commands/rocksdb",
    "maxEntries": 10000,
    "maxHistory": 100,
    "timeToLive": "300s",
    "statsPollInterval": "300s",
    "averageEntrySizeBytes": 16384,
    "averageHistoricalEntrySizeBytes": 65536
  }
}

DateList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
dates array of ZonedDate Yes The list of dates.
default ZonedDate No The default date.
{
  "dates": [
    {
      "date": "2024-06-15",
      "timezone": "string"
    }
  ],
  "default": {
    "date": "2024-06-15",
    "timezone": "string"
  },
  "allowUserInput": false
}

DateType Copied

Field Type Required Description
default ZonedDate No The default date.
{
  "default": {
    "date": "2024-06-15",
    "timezone": "string"
  }
}

DeleteCommandPermissionsResponse Copied

Empty response returned when command permissions were successfully deleted.

Type: object

{}

DeleteCommandResponse Copied

Empty response returned when the command was successfully deleted.

Type: object

{}

Dimension Copied

A single Entity dimension.

Field Type Required Description
key string No
value string No
{
  "key": "string",
  "value": "string"
}

DurationList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default string No The default duration.
durations array of string Yes The list of durations.
{
  "durations": [
    "300s"
  ],
  "default": "300s",
  "allowUserInput": false
}

DurationType Copied

Field Type Required Description
default string No The default duration.
exclusiveMax boolean No Whether the maximum value is exclusive.
exclusiveMin boolean No Whether the minimum value is exclusive.
max string No The maximum acceptable value.
min string No The minimum acceptable value.
{
  "default": "300s",
  "min": "300s",
  "max": "300s",
  "exclusiveMin": false,
  "exclusiveMax": false
}

EntityArtifactFilter Copied

Field Type Required Description
names array of NamespacedName No List of artifact names to match (optional). Namespace and name are required for each entry.
namesOperator integer (enum) No The operator to apply to the list of names, if supplied. AND (default): All supplied names must match. OR: At least one of the supplied names must match.
types array of integer (enum) No Artifact types to match (optional).
{
  "namesOperator": 0,
  "names": [
    {
      "namespace": "string",
      "name": "string"
    }
  ],
  "types": [
    0
  ]
}

EntityFilter Copied

An entity filter expressed as either an expression or an exact dimension filter.

Field Type Required Description
artifactFilter EntityArtifactFilter No Optionally include only entities having specific artifact(s). This can be specified alone or in tandem with the entity_filter.
dimensions UnorderedDimensionsFilter No Exact match on an entity’s entire set of dimensions, irrespective of the order of dimensions. This can match multiple entities, i.e. those with same dimensions but different hierarchy.
expression Expression No Filter by one or more entities matching an expression.
orderedDimensions OrderedDimensionsFilter No Exact match on an entity’s entire set of dimensions, taking the order of dimensions into account. This can match at most one entity.
{
  "orderedDimensions": {
    "dimensions": [
      {
        "key": "string",
        "value": "string"
      }
    ]
  },
  "dimensions": {
    "dimensions": {
      "key": "string"
    }
  },
  "expression": {
    "additionalProperties": [
      {
        "name": "string",
        "value": {
          "value": {
            "@type": "string"
          },
          "yaml": "string"
        }
      }
    ]
  },
  "artifactFilter": {
    "namesOperator": 0,
    "names": [
      {
        "namespace": "string",
        "name": "string"
      }
    ],
    "types": [
      0
    ]
  }
}

EntityTargetFilter Copied

Field Type Required Description
entityFilter EntityFilter No The entity filter. If not set, the command applies to all entities.
{
  "entityFilter": {
    "orderedDimensions": {
      "dimensions": [
        {
          "key": "string",
          "value": "string"
        }
      ]
    },
    "dimensions": {
      "dimensions": {
        "key": "string"
      }
    },
    "expression": {
      "additionalProperties": [
        {
          "name": "string",
          "value": {
            "value": {
              "@type": "string"
            },
            "yaml": "string"
          }
        }
      ]
    },
    "artifactFilter": {
      "namesOperator": 0,
      "names": [
        {
          "namespace": "string",
          "name": "string"
        }
      ],
      "types": [
        0
      ]
    }
  }
}

ExecuteCommandRequest Copied

Submits a registered command for execution against a target. When the owning service has supportsPermissions enabled, the caller must match that service’s command permissions (or hold the IAX admin role).

Field Type Required Description
command ExecutingCommand Yes The command instance to execute, including ID, target, and any required argument values.
{
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "gateway",
            "value": "Test Gateway"
          },
          {
            "key": "probe",
            "value": "infra-probe"
          },
          {
            "key": "managedEntity",
            "value": "app-server"
          }
        ]
      }
    }
  }
}

ExecuteCommandResponse Copied

Identifier and initial status for a submitted command execution.

Field Type Required Description
execId string Yes Unique execution ID used to track status, output, cancellation, and TTL.
status CommandStatus Yes Initial status of the submitted command execution.
{
  "execId": "2",
  "status": {
    "state": "TRIGGERED"
  }
}

ExecutingCommand Copied

A command instance submitted for execution, including the command ID, target, and optional argument values.

Required: ID, target. Optional: arguments, executionGroup.

Field Type Required Description
arguments array of CommandArgumentEntry No Argument values required by the command definition, keyed by argument key.
executionGroup string No Optional execution group used to correlate related command executions.
id CommandId Yes Identity of the registered command to execute (service + command name).
target CommandTarget Yes Entity, metric, or log target against which the command should run.
{
  "id": {
    "service": {
      "namespace": "itrsgroup.com/geneos",
      "name": "Test Gateway"
    },
    "name": "/SNOOZE:manual"
  },
  "target": {
    "entity": {
      "dimensions": [
        {
          "key": "gateway",
          "value": "Test Gateway"
        },
        {
          "key": "probe",
          "value": "infra-probe"
        },
        {
          "key": "managedEntity",
          "value": "app-server"
        }
      ]
    }
  }
}

Expression Copied

Field Type Required Description
additionalProperties array of NamedAny No
{
  "additionalProperties": [
    {
      "name": "string",
      "value": {
        "value": {
          "@type": "string"
        },
        "yaml": "string"
      }
    }
  ]
}

ExtendTtlRequest Copied

Field Type Required Description
execId string Yes The command execution ID.
extendBy string Yes The amount of time to extend the command’s time to live by. This duration is added to the executing command’s end of life time, not the current time. It cannot exceed the configured maximum time to live limit which defaults to 1 hour.
{
  "execId": "1",
  "extendBy": "3600s"
}

ExtendTtlResponse Copied

Field Type Required Description
endOfLife string (date-time) Yes The updated end of life of the command.
{
  "endOfLife": "2024-06-15T05:58:31.013397Z"
}

FailCommand Copied

Field Type Required Description
claimId string Yes The command claim ID.
code integer (enum) Yes The error status code.
message string Yes An error message.
{
  "claimId": "string",
  "code": 0,
  "message": "string"
}

FloatList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default number (float) No The default option.
floats array of number (float) Yes A list of float options.
{
  "floats": [
    0.0
  ],
  "default": 0.0,
  "allowUserInput": false
}

FloatType Copied

Field Type Required Description
default number (float) No The default value.
exclusiveMax boolean No Whether the maximum value is exclusive.
exclusiveMin boolean No Whether the minimum value is exclusive.
max number (float) No The maximum acceptable value.
min number (float) No The minimum acceptable value.
{
  "default": 0.0,
  "min": 0.0,
  "max": 0.0,
  "exclusiveMin": false,
  "exclusiveMax": false
}

GetApiVersionsResponse Copied

Field Type Required Description
versions array of string Yes A list of supported API versions.
{
  "versions": [
    "v1",
    "v2"
  ]
}

GetCommandServiceResponse Copied

Metadata for a registered command service, including whether fine-grained command permissions are enabled.

Field Type Required Description
commands array of string No A list of command names that belong to this service
filters array of CommandTargetFilter No A list of filters that applies to all commands for this service
service Service Yes
supportsPermissions boolean Yes Whether this service uses fine-grained command permissions. When true, QueryCommands and ExecuteCommand enforce permissions published for this service.
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "commands": [
    "/SNOOZE:manual",
    "/SNOOZE:unsnooze"
  ],
  "supportsPermissions": true
}

GetConfigResponse Copied

Field Type Required Description
config CommandsServiceConfig Yes The application’s current configuration options.
{
  "config": {
    "rpcTimeout": "300s",
    "serviceLivenessTimeout": "300s",
    "entityCacheTtl": "300s",
    "commandRegistration": {
      "housekeepingInterval": "300s",
      "tokenTtl": "300s"
    },
    "commandExecution": {
      "claimTimeout": "300s",
      "retentionPeriod": "300s",
      "housekeepingInterval": "300s",
      "persistenceEnabled": false,
      "persistencePath": "/data/commands/rocksdb",
      "maxEntries": 10000,
      "maxHistory": 100,
      "timeToLive": "300s",
      "statsPollInterval": "300s",
      "averageEntrySizeBytes": 16384,
      "averageHistoricalEntrySizeBytes": 65536
    }
  }
}

GoogleProtobufAny Copied

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

Field Type Required Description
@type string No The type of the serialized message.
{
  "@type": "string"
}

IntegerList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default integer (int32) No The default integer value.
integers array of integer (int32) Yes A list of integer options.
{
  "integers": [
    0
  ],
  "default": 0,
  "allowUserInput": false
}

IntegerType Copied

Field Type Required Description
default integer (int32) No The default value.
max integer (int32) No The maximum acceptable value.
min integer (int32) No The minimum acceptable value.
{
  "default": 0,
  "min": 0,
  "max": 0
}

LogTargetFilter Copied

Field Type Required Description
entityFilter EntityFilter No The entity filter. If not set, the command applies to all entities.
log NamespacedName No The log filter. If set, the command only applies to logs with the supplied namespace and/or name. Both fields are optional. Fields that are not set are treated as wildcards.
{
  "entityFilter": {
    "orderedDimensions": {
      "dimensions": [
        {
          "key": "string",
          "value": "string"
        }
      ]
    },
    "dimensions": {
      "dimensions": {
        "key": "string"
      }
    },
    "expression": {
      "additionalProperties": [
        {
          "name": "string",
          "value": {
            "value": {
              "@type": "string"
            },
            "yaml": "string"
          }
        }
      ]
    },
    "artifactFilter": {
      "namesOperator": 0,
      "names": [
        {
          "namespace": "string",
          "name": "string"
        }
      ],
      "types": [
        0
      ]
    }
  },
  "log": {
    "namespace": "string",
    "name": "string"
  }
}

MetricTargetFilter Copied

Field Type Required Description
entityFilter EntityFilter No The entity filter. If not set, the command applies to all entities.
metric NamespacedName No The metric filter. If set, the command only applies to logs with the supplied namespace and/or name. Both fields are optional. Fields that are not set are treated as wildcards.
{
  "entityFilter": {
    "orderedDimensions": {
      "dimensions": [
        {
          "key": "string",
          "value": "string"
        }
      ]
    },
    "dimensions": {
      "dimensions": {
        "key": "string"
      }
    },
    "expression": {
      "additionalProperties": [
        {
          "name": "string",
          "value": {
            "value": {
              "@type": "string"
            },
            "yaml": "string"
          }
        }
      ]
    },
    "artifactFilter": {
      "namesOperator": 0,
      "names": [
        {
          "namespace": "string",
          "name": "string"
        }
      ],
      "types": [
        0
      ]
    }
  },
  "metric": {
    "namespace": "string",
    "name": "string"
  }
}

NamedAny Copied

Automatically-generated message used to represent maps of Any as ordered (name,value) pairs.

Field Type Required Description
name string No Map key
value Any No Mapped value
{
  "name": "string",
  "value": {
    "value": {
      "@type": "string"
    },
    "yaml": "string"
  }
}

NamespacedName Copied

A namespaced name.

Field Type Required Description
name string No Name.
namespace string No Namespace.
{
  "namespace": "string",
  "name": "string"
}

OrderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, taking the order of dimensions into account.

Field Type Required Description
dimensions array of Dimension No Dimensions (required). Cannot be empty.
{
  "dimensions": [
    {
      "key": "string",
      "value": "string"
    }
  ]
}

PutCommandExecutionStatusRequest Copied

Option Type Description
claim ClaimCommand One possible shape for this schema
renewClaim RenewClaimCommand One possible shape for this schema
fail FailCommand One possible shape for this schema
output SendCommandOutput One possible shape for this schema
{
  "claim": {
    "claimFor": "300s",
    "execId": "1"
  }
}

PutCommandExecutionStatusResponse Copied

Field Type Required Description
claimId string Yes The command claim ID.
execId string Yes The command execution ID.
status CommandStatus Yes The updated command status.
{
  "execId": "20",
  "claimId": "2",
  "status": {
    "state": "COMMAND_LIFECYCLE_CANCELLED",
    "triggerInfo": {
      "triggeredAt": "2024-06-15T19:51:17.437128Z",
      "triggeredBy": {
        "username": "jbloggs",
        "displayName": "Joe Bloggs",
        "roles": [
          "admin"
        ],
        "groups": [
          "engineering-managers"
        ]
      }
    },
    "claimInfo": {
      "claimedAt": "2024-06-15T19:51:27.439549Z",
      "claimExpiresAt": "2024-06-15T19:56:47.439558Z"
    },
    "outputInfo": {
      "lastUpdatedAt": "2024-06-15T19:51:37.442321Z"
    },
    "cancellationInfo": {
      "cancelledAt": "2024-06-15T19:51:42.444117Z",
      "reason": "Cancelled by user 'admin'"
    }
  }
}

PutCommandPermissionsRequest Copied

Replaces the complete set of fine-grained command permissions for a registered command service. The service must already exist and have supportsPermissions enabled.

Required: service, permissions. Each permission requires name, roles, targets, and commandNamePatterns; commandGroupNames is optional.

Each permission grants one or more IAX roles access to commands matching name patterns (and optionally command groups and entity/metric targets). The supplied list fully replaces any previously stored permissions for the service.

Field Type Required Description
permissions array of CommandPermission Yes The complete permission list for the service. Replaces any existing entries. An empty list clears all permissions for the service (default-deny for non-admin users when supportsPermissions is true).
service Service Yes
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "permissions": [
    {
      "name": "allow-snooze",
      "roles": [
        "operator"
      ],
      "targets": [
        {}
      ],
      "commandGroupNames": [
        "snooze"
      ],
      "commandNamePatterns": [
        "/SNOOZE:*"
      ]
    }
  ]
}

PutCommandPermissionsResponse Copied

Empty response returned when command permissions were successfully replaced.

Type: object

{}

PutCommandRequest Copied

Inserts or updates a single command definition for its owning service.

Field Type Required Description
command Command Yes
{
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/geneos",
        "name": "Test Gateway"
      },
      "name": "/SNOOZE:manual"
    },
    "displayName": "Manual",
    "commandGroups": [
      "snooze"
    ],
    "categories": [
      "Snooze",
      "Manual"
    ],
    "targets": [
      {
        "entity": {}
      }
    ]
  }
}

PutCommandResponse Copied

Empty response returned when the command was successfully inserted or updated.

Type: object

{}

QueryCommandPermissionsRequest Copied

Query fine-grained command permissions configured for command services.

Filtering can be done using:

If neither service nor name is set, permissions across all registered services are returned (subject to pagination).

Field Type Required Description
limit integer (int32) No Maximum number of permissions to return. Defaults to 100.
name string No When set, only the permission with this name is returned (if it exists for the selected service scope).
service Service No When set, only permissions for this command service are returned. Omit to query across all registered services.
skip integer (int32) No Number of matching permissions to skip before returning results. Defaults to 0.
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "skip": 0,
  "limit": 100
}

QueryCommandPermissionsResponse Copied

List of command permissions matching the query, plus a pagination flag.

Field Type Required Description
hasMore boolean Yes True when additional matching permissions exist beyond the requested page.
permissions array of CommandPermission No The command permissions matching the query.
{
  "permissions": [
    {
      "name": "allow-snooze",
      "roles": [
        "operator"
      ],
      "targets": [
        {}
      ],
      "commandGroupNames": [
        "snooze"
      ],
      "commandNamePatterns": [
        "/SNOOZE:*"
      ]
    }
  ],
  "hasMore": false
}

QueryCommandsRequest Copied

Query registered command definitions.

Filtering can be done using:

When a matching service has supportsPermissions enabled, results are filtered by the caller’s IAX roles (admin users bypass permission filtering).

Field Type Required Description
commandGroup string No When set, only commands in this command group are returned.
excludeFilters boolean No When true, command target filters are omitted from the response to reduce payload size. Defaults to false.
limit integer (int32) No Maximum number of commands to return. Defaults to 100.
name string No When set, only commands with this exact name are returned.
searchTerm string No When set, only commands whose display name or categories contain this term are returned (case-insensitive substring match).
service Service No When set, only commands for this service are returned. Permissions for other services are not applied.
skip integer (int32) No Number of matching commands to skip before returning results. Defaults to 0.
target CommandTarget No When set, only commands that apply to this entity, metric, or log target are returned. Also used when evaluating target-scoped command permissions.
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "target": {
    "entity": {
      "dimensions": [
        {
          "key": "gateway",
          "value": "Test Gateway"
        },
        {
          "key": "probe",
          "value": "infra-probe"
        },
        {
          "key": "managedEntity",
          "value": "app-server"
        }
      ]
    }
  },
  "commandGroup": "snooze",
  "skip": 0,
  "limit": 100
}

QueryCommandsResponse Copied

Commands matching the query after service, target, and permission filtering.

Field Type Required Description
commands array of Command No Command definitions matching the query.
hasMore boolean Yes True when additional matching commands exist beyond the requested page.
{
  "commands": [
    {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/geneos",
          "name": "Test Gateway"
        },
        "name": "/SNOOZE:manual"
      },
      "displayName": "Manual",
      "commandGroups": [
        "snooze"
      ],
      "categories": [
        "Snooze",
        "Manual"
      ]
    }
  ],
  "hasMore": false
}

QueryTriggeredCommandsRequest Copied

Field Type Required Description
limit integer (uint32) No The maximum number of commands to return.
service Service No If set, only returns the commands destined for the supplied service.
skip integer (uint32) No The number of results to skip.
{
  "service": {
    "namespace": "itrsgroup.com/obcerv/app",
    "name": "obcerv-app-notifications"
  },
  "limit": 20,
  "skip": 0
}

QueryTriggeredCommandsResponse Copied

Field Type Required Description
commandEntries array of TriggeredCommandEntry No The commands that have been triggered for the supplied service. May be empty.
hasMore boolean Yes Whether there are more commands to return.
{
  "commandEntries": [
    {
      "commandExecution": {
        "execId": "1",
        "command": {
          "id": {
            "service": {
              "namespace": "itrsgroup.com/obcerv/app",
              "name": "obcerv-app-notifications"
            },
            "name": "entity:notify"
          },
          "arguments": {
            "Configuration": {
              "string": "1"
            }
          },
          "target": {
            "entity": {
              "dimensions": [
                {
                  "key": "node",
                  "value": "itrsgroup.node.101.com"
                }
              ]
            }
          }
        },
        "triggeredAt": "2024-06-15T19:32:49.552871Z"
      }
    },
    {
      "commandCancellation": {
        "execId": "2",
        "cancelledBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        },
        "cancelledAt": "2024-06-15T19:33:44.553749Z"
      }
    }
  ]
}

QueryTriggeredCommandsStatusRequest Copied

Field Type Required Description
from string (date-time) No Only return command that have been triggered from the supplied time. If not supplied then all commands are returned.
limit integer (uint32) No The maximum number of entries to return.
skip integer (uint32) No The number of entries to skip.
stateFilter array of integer (enum) No Only returns command status entries that match any of the supplied lifecycle states.
{
  "from": "2024-06-15T05:58:31.013397Z",
  "skip": 0,
  "limit": 100,
  "stateFilter": [
    "COMMAND_LIFECYCLE_COMPLETED"
  ]
}

QueryTriggeredCommandsStatusResponse Copied

Field Type Required Description
commandStatusEntries array of CommandStatusEntry No A list of command status entries.
hasMore boolean No Whether there are more status entries to return.
numEntries integer (int32) No The total number of entries.
{
  "commandStatusEntries": [
    {
      "execId": "1",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_COMPLETED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "completedAt": "2024-07-23T09:13:34.062745Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        }
      }
    },
    {
      "execId": "2",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_FAILED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        },
        "failureInfo": {
          "failedAt": "2024-07-23T09:13:34.063762Z",
          "code": "PERMISSION_DENIED",
          "message": "Insufficient permissions"
        }
      }
    },
    {
      "execId": "3",
      "command": {
        "id": {
          "service": {
            "namespace": "itrsgroup.com/obcerv/app",
            "name": "obcerv-app-notifications"
          },
          "name": "entity:notify"
        },
        "arguments": [
          {
            "key": "Configuration",
            "argument": {
              "string": "1"
            }
          }
        ],
        "target": {
          "entity": {
            "dimensions": [
              {
                "key": "node",
                "value": "itrsgroup.node.101.com"
              }
            ]
          }
        }
      },
      "status": {
        "state": "COMMAND_LIFECYCLE_CANCELLED",
        "triggerInfo": {
          "triggeredAt": "2024-07-23T09:13:09.059154Z",
          "triggeredBy": {
            "username": "jbloggs",
            "displayName": "Joe Bloggs",
            "roles": [
              "admin"
            ],
            "groups": [
              "engineering-managers"
            ]
          }
        },
        "claimInfo": {
          "claimedAt": "2024-07-23T09:13:19.061917Z",
          "claimExpiresAt": "2024-07-23T09:18:39.061926Z"
        },
        "outputInfo": {
          "lastUpdatedAt": "2024-07-23T09:13:29.062715Z",
          "hasOutputStream": true,
          "hasErrorStream": true
        },
        "cancellationInfo": {
          "cancelledAt": "2024-07-23T09:13:34.064444Z",
          "reason": "Cancelled by user 'admin'"
        }
      }
    }
  ],
  "hasMore": false,
  "numEntries": 1024
}

RegisterCommandsRequest Copied

Registers or replaces the full command set for a command service (for example a Geneos Gateway).

All commands must belong to the same service. On a complete request, commands omitted from the list are deleted. Set supportsPermissions to true to enable fine-grained role-based command permissions for the service, then publish permissions with PutCommandPermissions.

Large command sets may be sent in batches using isIncomplete and registrationToken.

Set validationMode to VALIDATION_MODE_LENIENT to register valid commands while rejecting invalid ones; defaults to VALIDATION_MODE_STRICT.

Field Type Required Description
service Service Yes The service that owns the commands being registered
commands array of Command Yes The commands to register. All commands must be for the same service. If a command omits its service, the request service is used. If any command references a different service, the request fails. An empty list on a complete request deletes all commands for the service
filters array of CommandTargetFilter No Optional service-level filters that apply to all commands for this service
isIncomplete boolean No When true, this request is a partial batch and a registrationToken is returned for subsequent batches. Defaults to false (complete request)
registrationToken string No Token returned from a previous incomplete registration batch. Required for subsequent batches of the same registration
supportsPermissions boolean No When true, enables fine-grained command permissions for this service. After registration, publish permissions with PutCommandPermissions. When true and no permissions are configured, users are denied access (default-deny). Defaults to false
validationMode enum No How invalid commands are handled. VALIDATION_MODE_STRICT (default; also applied when omitted) rejects the entire request if any command fails validation. VALIDATION_MODE_LENIENT registers valid commands and returns rejected commands in the response
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Test Gateway"
  },
  "supportsPermissions": true,
  "validationMode": "VALIDATION_MODE_LENIENT",
  "filters": [
    {
      "entity": {}
    }
  ],
  "commands": [
    {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/geneos",
          "name": "Test Gateway"
        },
        "name": "/SNOOZE:manual"
      },
      "displayName": "Manual",
      "commandGroups": [
        "snooze"
      ],
      "categories": [
        "Snooze",
        "Manual"
      ],
      "targets": [
        {
          "entity": {}
        }
      ]
    }
  ]
}

RegisterCommandsResponse Copied

Counts of commands added, updated, and deleted by the registration request. A registrationToken is included only for incomplete batched registrations. rejected is included when validationMode is VALIDATION_MODE_LENIENT.

Field Type Required Description
added integer (uint32) Yes The number of commands that were added. Meaningful on the final (complete) batch
updated integer (uint32) Yes The number of commands that were updated. Meaningful on the final (complete) batch
deleted integer (uint32) Yes The number of commands that were deleted. Meaningful on the final (complete) batch
registrationToken CommandRegistrationToken No Returned only when isIncomplete is true. Must be supplied on subsequent batches. Invalidated on expiry or when a complete request is sent
rejected array of RejectedCommand No Commands rejected during validation. Present when validationMode is VALIDATION_MODE_LENIENT (may be empty). Omitted for VALIDATION_MODE_STRICT. For batched registration, contains rejections for the current batch only
{
  "added": 2,
  "updated": 1,
  "deleted": 1,
  "rejected": [
    {
      "index": 1,
      "name": "",
      "reason": "Command at index '1' must have a name"
    }
  ]
}

RejectedCommand Copied

A command that was rejected during RegisterCommands validation. Returned in rejected when validationMode is VALIDATION_MODE_LENIENT.

Field Type Required Description
index integer (uint32) Yes Zero-based index of the rejected command in the request commands list
name string No Command name if available; empty when the command had no name
reason string Yes Why the command was rejected
{
  "index": 1,
  "name": "",
  "reason": "Command at index '1' must have a name"
}

RenewClaimCommand Copied

Field Type Required Description
claimFor string Yes The duration of the claim for this command. If the claim is not renewed and the command has not been updated within this time, the command will be considered failed due to a timeout.
claimId string Yes If a command hasn’t been claimed and a claim ID is supplied then the claim will fail.
comment string No A human readable comment.
{
  "claimFor": "300s",
  "claimId": "string",
  "comment": "string"
}

Scopes Copied

Field Type Required Description
scopes array of string No
{
  "scopes": [
    "string"
  ]
}

SendCommandOutput Copied

Field Type Required Description
claimId string Yes The claim ID for this command.
outputStreams CommandOutputStreams No The command output.
stateOperation integer (enum) Yes The command state transition operation.
{
  "claimId": "string",
  "stateOperation": 0,
  "outputStreams": {
    "outputStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    },
    "errorStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    },
    "execStream": {
      "streamOperation": 0,
      "contentType": "string",
      "output": "string"
    }
  }
}

Service Copied

Field Type Required Description
name string Yes The service name. Identifies the source of the command and forms part of the unique identifier of a command in order to resolve name conflicts. (e.g. myGateway).
namespace string Yes The service namespace. Identifies the source of the command and forms part of the unique identifier of a command in order to resolve name conflicts. (e.g. itrsgroup.com/geneos).
{
  "namespace": "itrsgroup.com/geneos",
  "name": "Middleware Gateway"
}

Status Copied

The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.

Field Type Required Description
code integer (int32) No The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
details array of GoogleProtobufAny No A list of messages that carry the error details. There is a common set of message types for APIs to use.
message string No A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
{
  "code": 0,
  "message": "string",
  "details": [
    {
      "@type": "string"
    }
  ]
}

StringList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default StringList_StringEntry No The default string entry.
entries array of StringList_StringEntry Yes A list of string entries.
{
  "entries": [
    {
      "value": "string",
      "displayValue": "string"
    }
  ],
  "default": {
    "value": "string",
    "displayValue": "string"
  },
  "allowUserInput": false
}

StringList_StringEntry Copied

Field Type Required Description
displayValue string No The string option’s display value. If not set, the value is used as the display value.
value string Yes The string argument value.
{
  "value": "string",
  "displayValue": "string"
}

StringType Copied

Field Type Required Description
default string No The default string value.
isMultiLine boolean No Set if the input is a multi line string.
isPassword boolean No Set if the input is a password.
maxLength integer (int32) No The maximum string length.
minLength integer (int32) No The minimum string length.
{
  "default": "string",
  "minLength": 0,
  "maxLength": 0,
  "isPassword": false,
  "isMultiLine": false
}

SubscribeTriggeredCommandOutputResponse Copied

Field Type Required Description
entry CommandExecutionEntry No The command status and output.
{
  "entry": {
    "status": {
      "state": "COMMAND_LIFECYCLE_FAILED",
      "triggerInfo": {
        "triggeredAt": "2024-06-15T19:48:47.549334Z",
        "triggeredBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        }
      },
      "claimInfo": {
        "claimedAt": "2024-06-15T19:48:57.551984Z",
        "claimExpiresAt": "2024-06-15T19:54:17.551994Z"
      },
      "outputInfo": {
        "lastUpdatedAt": "2024-06-15T19:49:07.554677Z"
      },
      "failureInfo": {
        "failedAt": "2024-06-15T19:49:12.555704Z",
        "code": "PERMISSION_DENIED",
        "message": "Insufficient permissions"
      }
    }
  },
  "outputStreams": {
    "outputStream": {
      "streamOperation": "STREAM_OPERATION_APPEND",
      "contentType": "text/plain",
      "output": "INFO  - Started"
    },
    "execStream": {
      "streamOperation": "STREAM_OPERATION_REPLACE",
      "contentType": "text/plain",
      "output": "Command 'tail -f app.log' returned exit code 0"
    }
  },
  "command": {
    "id": {
      "service": {
        "namespace": "itrsgroup.com/obcerv/app",
        "name": "obcerv-app-notifications"
      },
      "name": "entity:notify"
    },
    "arguments": [
      {
        "key": "Configuration",
        "argument": {
          "string": "1"
        }
      }
    ],
    "target": {
      "entity": {
        "dimensions": [
          {
            "key": "node",
            "value": "itrsgroup.node.101.com"
          }
        ]
      }
    }
  }
}

SubscribeTriggeredCommandsRequest Copied

Field Type Required Description
service Service Yes Only returns the commands destined for the supplied service.
{
  "service": {
    "namespace": "itrsgroup.com/geneos",
    "name": "Middleware Gateway"
  }
}

SubscribeTriggeredCommandsResponse Copied

Option Type Description
commandExecution CommandExecutionRequest One possible shape for this schema
commandCancellation CommandCancellationRequest One possible shape for this schema
{
  "commandExecution": {
    "execId": "1",
    "command": {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/obcerv/app",
          "name": "obcerv-app-notifications"
        },
        "name": "entity:notify"
      },
      "arguments": [
        {
          "key": "Configuration",
          "argument": {
            "string": "1"
          }
        }
      ],
      "target": {
        "entity": {
          "dimensions": [
            {
              "key": "node",
              "value": "itrsgroup.node.101.com"
            }
          ]
        }
      }
    },
    "triggeredAt": "2024-07-23T09:12:39.065404Z"
  }
}

SubscribeTriggeredCommandsStatusRequest Copied

Field Type Required Description
from string (date-time) No Subscribe from a point in the past. Defaults to the time of request.
limit integer (int32) No Limits the amount of completed commands that are returned. All commands that are in progress are returned regardless of the value of this setting.
{
  "from": "2024-06-15T05:58:31.013397Z",
  "limit": 100
}

SubscribeTriggeredCommandsStatusResponse Copied

Field Type Required Description
statusEntry CommandStatusEntry No The command status payload.
{
  "statusEntry": {
    "execId": "1",
    "command": {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/obcerv/app",
          "name": "obcerv-app-notifications"
        },
        "name": "entity:notify"
      },
      "arguments": {
        "Configuration": {
          "string": "1"
        }
      },
      "target": {
        "entity": {
          "dimensions": [
            {
              "key": "node",
              "value": "itrsgroup.node.101.com"
            }
          ]
        }
      }
    },
    "status": {
      "state": "COMMAND_LIFECYCLE_FAILED",
      "triggerInfo": {
        "triggeredAt": "2024-06-15T19:48:47.549334Z",
        "triggeredBy": {
          "username": "jbloggs",
          "displayName": "Joe Bloggs",
          "roles": [
            "admin"
          ],
          "groups": [
            "engineering-managers"
          ]
        }
      },
      "claimInfo": {
        "claimedAt": "2024-06-15T19:48:57.551984Z",
        "claimExpiresAt": "2024-06-15T19:54:17.551994Z"
      },
      "outputInfo": {
        "lastUpdatedAt": "2024-06-15T19:49:07.554677Z"
      },
      "failureInfo": {
        "failedAt": "2024-06-15T19:49:12.555704Z",
        "code": "PERMISSION_DENIED",
        "message": "Insufficient permissions"
      }
    }
  }
}

TimeOfDay Copied

Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are [google.type.Date][google.type.Date] and google.protobuf.Timestamp.

Field Type Required Description
hours integer (int32) No Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value “24:00:00” for scenarios like business closing time.
minutes integer (int32) No Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
nanos integer (int32) No Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
seconds integer (int32) No Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
{
  "hours": 0,
  "minutes": 0,
  "seconds": 0,
  "nanos": 0
}

TimeOfDayList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default ZonedTimeOfDay No The default time of day.
timesOfDay array of ZonedTimeOfDay Yes The list of times of day.
{
  "timesOfDay": [
    {
      "timeOfDay": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "nanos": 0
      },
      "timezone": "string"
    }
  ],
  "default": {
    "timeOfDay": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "nanos": 0
    },
    "timezone": "string"
  },
  "allowUserInput": false
}

TimeOfDayType Copied

Field Type Required Description
default ZonedTimeOfDay No The default time of day.
{
  "default": {
    "timeOfDay": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "nanos": 0
    },
    "timezone": "string"
  }
}

TimestampList Copied

Field Type Required Description
allowUserInput boolean No Whether to allow a user-supplied option that is not part of the pre-defined list of entries.
default string (date-time) No The default timestamp.
timestamps array of string (date-time) Yes The list of timestamps.
{
  "timestamps": [
    "2024-06-15T05:58:31.013397Z"
  ],
  "default": "2024-06-15T05:58:31.013397Z",
  "allowUserInput": false
}

TimestampType Copied

Field Type Required Description
default string (date-time) No The default value value.
exclusiveMax boolean No Whether the maximum value is exclusive.
exclusiveMin boolean No Whether the minimum value is exclusive.
max string (date-time) No The maximum acceptable value.
min string (date-time) No The minimum acceptable value.
{
  "default": "2024-06-15T05:58:31.013397Z",
  "min": "2024-06-15T05:58:31.013397Z",
  "max": "2024-06-15T05:58:31.013397Z",
  "exclusiveMin": false,
  "exclusiveMax": false
}

TriggeredCommandEntry Copied

Option Type Description
commandExecution CommandExecutionRequest One possible shape for this schema
commandCancellation CommandCancellationRequest One possible shape for this schema
{
  "commandExecution": {
    "execId": "20",
    "command": {
      "id": {
        "service": {
          "namespace": "itrsgroup.com/geneos",
          "name": "Test Gateway"
        },
        "name": "/SNOOZE:manual"
      },
      "target": {
        "entity": {
          "dimensions": [
            {
              "key": "gateway",
              "value": "Test Gateway"
            },
            {
              "key": "probe",
              "value": "infra-probe"
            },
            {
              "key": "managedEntity",
              "value": "app-server"
            }
          ]
        }
      }
    },
    "triggeredBy": {
      "username": "jbloggs",
      "displayName": "Joe Bloggs",
      "roles": [
        "admin"
      ],
      "groups": [
        "engineering-managers"
      ],
      "permissions": {
        "obcerv-app-commands": {
          "scopes": [
            "view",
            "execute"
          ]
        }
      }
    },
    "triggeredAt": "2024-06-15T05:58:31.013397Z"
  }
}

UnorderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, irrespective of the order of dimensions.

Field Type Required Description
dimensions object map of string No Dimensions (required). Cannot be empty.
{
  "dimensions": {
    "key": "string"
  }
}

User Copied

Field Type Required Description
displayName string No The user’s display name (e.g. Chris Davies).
groups array of string No A list of the user’s groups.
permissions object map of Scopes No A map of the user’s resources to a list of scopes.
roles array of string No A list of the user’s roles.
username string Yes The user’s unique identifier.
{
  "username": "jbloggs",
  "displayName": "Joe Bloggs",
  "roles": [
    "admin"
  ],
  "groups": [
    "engineering-managers"
  ],
  "permissions": {
    "obcerv-app-commands": {
      "scopes": [
        "view",
        "execute"
      ]
    }
  }
}

UserInputOptions Copied

Option Type Description
strings StringList One possible shape for this schema
floats FloatList One possible shape for this schema
integers IntegerList One possible shape for this schema
durations DurationList One possible shape for this schema
timestamps TimestampList One possible shape for this schema
dates DateList One possible shape for this schema
timesOfDay TimeOfDayList One possible shape for this schema
{
  "strings": {
    "entries": [
      {
        "value": "string",
        "displayValue": "string"
      }
    ],
    "default": {
      "value": "string",
      "displayValue": "string"
    },
    "allowUserInput": false
  }
}

ZonedDate Copied

Field Type Required Description
date string (date) Yes The date.
timezone string No The timezone.
{
  "date": "2024-06-15",
  "timezone": "string"
}

ZonedTimeOfDay Copied

Field Type Required Description
timeOfDay TimeOfDay Yes The time of day.
timezone string No The timezone.
{
  "timeOfDay": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "nanos": 0
  },
  "timezone": "string"
}

Command Lifecycle States Copied

Stream Operations Copied

Validation Modes Copied

Used by RegisterCommands via validationMode:

Error Responses Copied

All endpoints may return a default error response using the Status schema.

{
  "code": 0,
  "message": "string",
  "details": [
    {
      "@type": "string"
    }
  ]
}

Common Error Status Codes Copied

["ITRS Analytics"] ["ITRS Analytics > API Gateway"] ["User Guide"]

Was this topic helpful?