openapi: 3.2.0 info: title: Skylar Compliance Device API x-logo: url: data:image/png;base64,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 backgroundColor: '#1565c0' altText: Skylar Compliance version: '2.0' description: For any queries or issues, please use the ScienceLogic Portal. servers: - url: /api/v2 security: - Cookie: [] - Token: [] tags: - name: Device description: Devices are Skylar Compliance's representation of physical or virtual network devices. paths: /devices: get: summary: List devices tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ViewDevices responses: '200': description: OK content: application/json: schema: type: object properties: fields: description: The filtered fields type: array items: type: string offset: description: The number of items skipped type: integer minimum: 0 default: 0 limit: description: The numbers of items returned type: integer minimum: 1 default: 50 total: description: The total number of items type: integer search: description: The search parameters used to filter items title: Device Search Fields type: object properties: fulltext: description: Returned items match the search term type: string example: some text manufacturer: description: List of manufacturers used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - Cisco - BigIP exclude: description: Excluded from returned items type: array items: type: string example: - Solarwinds plugin_key: description: List of plugin keys used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - cisco_ios exclude: description: Excluded from returned items type: array items: type: string example: - cisco_asa location: description: List of locations used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - Comms Rack - ESX Server 1 exclude: description: Excluded from returned items type: array items: type: string example: - Home Office domain_id: description: List of domain IDs used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: integer exclude: description: Excluded from returned items type: array items: type: integer backupstatusstring: description: List of backup status used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - OK exclude: description: Excluded from returned items type: array items: type: string example: - Failed agent_id: description: List of agent IDs used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: integer exclude: description: Excluded from returned items type: array items: type: integer protocol: description: List of protocols used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - ssh - ftp exclude: description: Excluded from returned items type: array items: type: string example: - telnet lastbackupattempt_after: description: Returned items are filtered by minimum lastbackupattempt date type: string example: '2020-01-02T15:04:05.999Z' lastbackupattempt_before: description: Returned items are filtered by minimum lastbackupattempt date type: string example: '2023-01-02T15:04:05.999Z' lastbackup_after: description: Returned items are filtered by minimum lastbackup date type: string example: '2020-01-02T15:04:05.999Z' lastbackup_before: description: Returned items are filtered by minimum lastbackup date type: string example: '2023-01-02T15:04:05.999Z' disabled: description: Disabled status included on returned items type: boolean compliancestatus: description: List of compliance status used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - Passed exclude: description: Excluded from returned items type: array items: type: string example: - Failed up: description: Up status included on returned items type: boolean serial: description: List of serial numbers used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - FCZ1047W0F9 - FKD1227W0F9 exclude: description: Excluded from returned items type: array items: type: string example: - FJJ13427W0D1 firmware: description: List of firmwares used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - IOS 12.1(22)EA4 - IOS 11.4(14)EA4 exclude: description: Excluded from returned items type: array items: type: string example: - IOS 10.1(34)EA2 baseline: description: List of baselines used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - 1 exclude: description: Excluded from returned items type: array items: type: string example: - 0 updated_after: description: Returned items are filtered by minimum updated date type: string example: '2020-01-02T15:04:05.999Z' updated_before: description: Returned items are filtered by minimum updated date type: string example: '2023-01-02T15:04:05.999Z' nextbackup_after: description: Returned items are filtered by minimum nextbackup date type: string example: '2020-01-02T15:04:05.999Z' nextbackup_before: description: Returned items are filtered by minimum nextbackup date type: string example: '2023-01-02T15:04:05.999Z' model: description: List of model used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - WS-C2950-24 exclude: description: Excluded from returned items type: array items: type: string example: - WS-C2950-24 state: description: List of states used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - Idle exclude: description: Excluded from returned items type: array items: type: string example: - Idle device_name: description: List of device names used to filter returned items type: object properties: include: description: Included on returned items type: array items: type: string example: - Router-1 - Switch-2 exclude: description: Excluded from returned items type: array items: type: string example: - Router-1 filter_op: description: Filter operation to use type: string enum: - and - or example: - or sort: description: The sorting parameters used to sort items type: array items: type: object properties: field: description: Name of the field used to sort items type: string order: description: Sorting order used to sort items type: string enum: - asc - desc scoped_permissions: description: 'Scoped permissions are used to filter the results by the user''s permissions on a given domain. It will only return results in the domain where the user has the specified permissions. ' type: array items: type: string example: - ViewDevices - PushFirmware data: description: The returned items type: array items: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema' required: - limit - offset operationId: list_devices description: Retrieve all devices parameters: - $ref: '#/paths/~1jobs/get/parameters/0' - $ref: '#/paths/~1devices~1%7Bid%7D~1backups~1%7Bbackup_id%7D~1config/parameters/0' - $ref: '#/paths/~1devices~1%7Bid%7D~1monitors/parameters/2' - $ref: '#/paths/~1jobs/get/parameters/3' - in: query name: scoped_permission[] schema: type: array items: type: string example: - ViewDevices - PushFirmware description: 'INTERNAL ONLY. This parameter might be subjected to change. Array of strings that should be used filter the items based on the user permissions on a given domain. ' - $ref: '#/paths/~1devices~1count/parameters/1' - $ref: '#/paths/~1devices~1count/parameters/2' - $ref: '#/paths/~1devices~1count/parameters/3' - $ref: '#/paths/~1devices~1count/parameters/4' - $ref: '#/paths/~1devices~1count/parameters/5' - $ref: '#/paths/~1devices~1count/parameters/6' - $ref: '#/paths/~1devices~1count/parameters/7' - $ref: '#/paths/~1devices~1count/parameters/8' - $ref: '#/paths/~1devices~1count/parameters/9' - $ref: '#/paths/~1devices~1count/parameters/10' - $ref: '#/paths/~1devices~1count/parameters/11' - $ref: '#/paths/~1devices~1count/parameters/12' - $ref: '#/paths/~1devices~1count/parameters/13' - $ref: '#/paths/~1devices~1count/parameters/14' - $ref: '#/paths/~1devices~1count/parameters/15' - $ref: '#/paths/~1devices~1count/parameters/16' - $ref: '#/paths/~1devices~1count/parameters/17' - $ref: '#/paths/~1devices~1count/parameters/18' - $ref: '#/paths/~1devices~1count/parameters/19' - $ref: '#/paths/~1devices~1count/parameters/20' - $ref: '#/paths/~1devices~1count/parameters/21' - $ref: '#/paths/~1devices~1count/parameters/22' - $ref: '#/paths/~1devices~1count/parameters/23' - $ref: '#/paths/~1devices~1count/parameters/24' - $ref: '#/paths/~1devices~1count/parameters/25' - $ref: '#/paths/~1devices~1count/parameters/26' - $ref: '#/paths/~1devices~1count/parameters/27' - $ref: '#/paths/~1devices~1count/parameters/28' - $ref: '#/paths/~1devices~1count/parameters/29' - $ref: '#/paths/~1devices~1count/parameters/30' - $ref: '#/paths/~1devices~1count/parameters/31' - $ref: '#/paths/~1devices~1count/parameters/32' - $ref: '#/paths/~1devices~1count/parameters/33' - $ref: '#/paths/~1devices~1count/parameters/34' - $ref: '#/paths/~1devices~1count/parameters/35' - $ref: '#/paths/~1devices~1count/parameters/36' - $ref: '#/paths/~1devices~1count/parameters/37' - $ref: '#/paths/~1devices~1count/parameters/38' - $ref: '#/paths/~1devices~1count/parameters/39' - $ref: '#/paths/~1devices~1count/parameters/40' - $ref: '#/paths/~1devices~1count/parameters/41' - $ref: '#/paths/~1devices~1count/parameters/42' - in: query name: base_domain_id[] schema: type: array items: type: integer description: INTERNAL USE ONLY. List of domain IDs to include in the results. This parameter enforces the domain over the regular filters. - in: query name: base_plugin_key[] schema: type: array items: type: string description: INTERNAL USE ONLY. List of keys to include in the results. This parameter enforces the plugin over the regular filters. - in: query name: device_name[] schema: type: array items: type: string description: List of device names to include in the results example: - Router-1 - Switch-2 - in: query name: not[device_name][] schema: type: array items: type: string description: List of device names to exclude from the results example: - Router-1 - in: query name: id[] schema: type: array items: type: integer description: List of IDs to include in the results post: summary: Create a device tags: - Device security: - Cookie: [] - Token: [] - Permissions: - AddDevice operationId: create_device description: Create a new device requestBody: required: true content: application/json: schema: title: Device type: object description: Device model properties: ID: description: Device ID type: integer example: 123 readOnly: true Name: description: Device name type: string example: Demo device DomainID: type: integer description: ID of the [Domain](#tag/Domain) a device belongs to (if any). Defaults to 0 if no domain is set default: 0 example: 123 DomainName: type: string readOnly: true description: Name of the [Domain](#tag/Domain) a device belongs to. Defaults to "Global" if no domain is set default: Global LabelIDs: writeOnly: true type: array description: A list of [Label](#tag/Label) IDs attached to this device items: type: integer example: - 1 - 2 - 3 Labels: description: A list of [Label](#tag/Label) attached to this device readOnly: true type: array items: type: object $ref: '#/paths/~1labels/post/requestBody/content/application~1json/schema' Disabled: type: boolean description: Disable or enable a device default: false example: true DisabledUntil: type: string description: 'Timestamp of when to re-enable a device if it is disabled. Pass an empty string `""` to disable a device forever. ' example: '2021-01-18T23:59:59.999Z' DisabledReason: type: string description: Reason for disabling a device Monitor: type: object description: Define device monitoring settings properties: Enabled: type: boolean description: Enable or disable device monitoring default: false example: true AlertFail: type: integer description: Regard as down after this many failures example: 2 IsPing: type: boolean description: Perform ICMP ping rather than TCP connect example: true default: false AlertEmail: type: boolean description: Send alert email to owner after AlertFail failures example: false default: false AlertEmailUp: type: boolean example: true description: Send alert email to owner when device is back up default: false AssetFields: type: array description: 'List of [Assetfields](#tag/SettingsAssetField) with device specific data ' items: type: object properties: ID: type: integer description: Internal [Assetfield](#tag/SettingsAssetField) ID example: 123 Name: type: string description: Asset field name example: Location readOnly: true Type: type: string description: Asset field type example: text readOnly: true Value: type: string description: Asset field value example: Example Location required: - ID - Value AdditionalInformation: type: object description: 'List of additional information values originating either from device''s plugin (e.g. interfaces, static routes, version, location) or info commands. ' properties: PluginCommands: type: array readOnly: true description: List of additional information values originating from device's plugin commands. items: type: object readOnly: true properties: Name: type: string readOnly: true description: Name of the plugin info type. example: Static Routes Value: type: string readOnly: true description: Value of the plugin info type function output. example: 'Default gateway: 172.16.21.254' InfoCommands: type: array description: List of additional information values originating from device's info commands. Writable only on update. items: type: object properties: ID: type: integer description: Info command's ID. example: 1 Value: type: string readOnly: true description: Value of the info command output. example: uptime is 2 weeks, 1 day, 22 hours, 51 minutes PluginKey: type: string description: A [Plugin](#tag/Plugin) identifier (`key`) that sets the plugin a device uses example: cisco_ios PluginName: type: string description: User friendly name of the plugin this device uses example: Cisco IOS readOnly: true PluginFields: $ref: '#/paths/~1devices~1test/post/requestBody/content/application~1json/schema/properties/PluginFields' PublicKey: type: string description: Device SSH public key used by a device to communicate with Skylar Compliance when `PluginKey` is `push_device` and `Protocol` is `sftp` example: ssh-rsa AAAAB3N... NotificationEmails: type: array description: Email addresses for notifications. Defaults to the email address of the user creating a device. items: type: string example: - afox@skylarcompliance.com - asilva@skylarcompliance.com Notifications: type: object description: Triggers for sending notification emails to the device owner properties: OnConfigChange: type: boolean description: Send notification if a configuration change has been detected (compares current with previous backup) example: true default: false OnBackupStart: type: boolean description: Notify when a scheduled backup starts example: false default: false OnBackupEnd: type: boolean description: Notify when a scheduled backup finishes example: false default: false SyslogTrigger: type: boolean description: 'Enables real-time change detection if this device supports it. **Please note:** In order to use this feature, you must configure the device to send its logs to Skylar Compliance using syslog. ' example: false default: false SuppressDuplicatedEmail: type: boolean default: false description: 'In combination with `OnConfigChange` and `SyslogTrigger` being `true`, this setting supresses duplicate emails. ' example: false LogTranscript: type: boolean default: false description: 'Select this option to keep a full transcript log for this device for debugging purposes. A transcript log is automatically saved if the backup fails, so this is rarely needed. ' FullTranscript: type: boolean default: false description: 'When enabled, device transcripts will not be truncated if they surpass the size limit. ' example: false BackupSchedules: description: 'Please note: Backup schedules inherit defaults from the [/settings/device](#tag/SettingsDevice) endpoint. ' type: array items: type: object properties: Schedule: type: string description: A [cron-like expression](#section/Schedules) example: 15 * * * * RetainVersions: type: integer description: How many different versions of backups to keep (`0` for unlimited) example: 5 default: 0 RetainDays: type: integer description: How many days to retain backups example: 5 default: 0 DeleteDays: type: integer description: How many days until backups are deleted. example: 5 default: 0 ConfigTypes: type: array description: Config types to backup. This is determined by a device's plugin. items: type: string default: _default example: - startup - running required: - Schedule ManualConfigTypes: type: array default: - _default description: 'List of configuration types that will be backed up if a manual backup is triggered. ' items: type: string default: _default example: - startup - running BackupPrefix: type: string description: Prefix for backup filenames BackupStatus: type: string readOnly: true description: Status for the last device backup enum: - OK - Failed Address: type: string description: Network address of the device. Supports IPv4, IPv6 and Hostnames example: - 127.0.0.1 - ::1 - skylarcompliance.com AgentID: type: integer description: 'ID of an [Agent](#tag/Agent) this device should communicate through. The default `0` means that Skylar Compliance will communicate with a device directly ' default: 0 AgentName: type: string description: Name of the [Agent](#tag/Agent) that a device uses (if set) readOnly: true example: An Agent Protocol: type: string description: Connection protocol to use. Check device's plugin for supported protocols example: scp CredentialID: type: integer description: 'ID of the [Credential](#tag/Credential) assigned to this device. Credentials take precedence over any username or password set for the device ' default: 0 example: 123 FailurePolicy: type: object description: 'What should Skylar Compliance to when a device encounters an error taking backups. Please note: Inherits defaults from the [Settings/Device](#tag/SettingsDevice) endpoint. ' properties: Retries: type: integer minimum: -1 maximum: 6 description: 'Sets the retry policy. When `PluginKey` is `push_device`, it holds the interval between each retry, in hours. If not, it holds the number of attempts. Special values are `0` (Always), which only applies when `PluginKey` is not `push_device` and `-1` (Never) ' example: 0 default: 0 Action: type: string description: 'Which action to take once the maximum amount of attempts have failed. This will either `Revert` to schedule, set the device to `Manual` backups or `Disable` the device. Only applies to devices which `PluginKey` is not `push_device` ' default: Revert enum: - Revert - Manual - Disable example: Disable Alerts: type: integer description: Number of attempts needed to trigger an alert. `0` means Always, `-1` Never example: 0 default: 0 RetryInterval: type: integer description: Time to wait before attempting a retry in minutes. Only applies to devices which `PluginKey` is not `push_device` example: 15 default: 45 UseAutoApply: type: boolean writeOnly: true description: 'If a compliance policy''s auto apply rule matches and this flag is set to `true`, then those rules will be automatically applied _only_ on device creation. ' default: false example: true PolicyIDs: type: array description: 'A list of [Compliance policies](#tag/Policy) to apply to this device. **Please note:** if `UseAutoApply` is set to true on device creation, `PolicyIDs` is set automatically with any policies that match and _any_ provided values are ignored. ' items: type: integer example: 123 default: [] example: - 1 - 2 - 3 CurrentPolicyViolations: type: array description: 'A list of [Compliancy policy](#tag/Policy) violations for the last backup this device has. ' readOnly: true items: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema/properties/PastPolicyViolations/items' PastPolicyViolations: type: array description: 'A list of [Compliancy policy](#tag/Policy) violations for all backups except the last one this device has. ' readOnly: true items: title: Policy violation description: Policy violation model type: object properties: Date: type: string description: Timestamp for when the underlying backup file was last seen. example: '2021-01-18T23:59:59.999Z' BackupVersion: type: integer description: Version of the device configuration that is in violation. example: 123 BackupID: type: integer description: Backup identifier for the configuration that is in violation. example: 123 ConfigType: type: string description: Configuration type that is in violation. example: running CommandName: type: string description: Name of the runtime command associated with the violation. example: Show version ContextConfigType: type: string description: Parent configuration type for context backup violations. example: running PolicyName: type: string description: Name of the policy that was violated. example: IOS - Enable Secret Is Set PolicyID: type: integer description: ID of the policy that was violated. example: 321 RuleName: type: string description: Name of the specific rule in the policy that was violated. example: Version RuleID: type: integer description: ID of the policy rule that was violated. example: 456 RuleSeverity: type: string description: Severity level of the policy rule. example: High RuleTimestamp: type: string description: Timestamp for when the rule test has been performed. example: '2021-01-18T23:59:59.999Z' Details: type: string description: Violation details, including a list of files and reasons. example: 'files: tmp/foo.txt, tmp/bar.txt reasons: tmp/foo.txt: 7 | match me, tmp/bar.txt: 3 | don''t match me' Remediation: type: string description: Any manual remediation steps that are reqiured to resolve the violation. example: Update device to version >= 6.0 UsePublicKeyAuthentication: type: boolean default: false description: 'Use public key for authenticating device connections over SSH. See [Settings/PublicKey](#tag/SettingsPublicKey) how to retrieve those for your appliance. ' DisableStrictHostKeyChecking: type: boolean default: false description: Disables the ssh host key validation when performing ssh connections. Logs whether or not the key has changed. BackupInterval: type: string description: 'Human readable string of the current backup interval for a device if a schedule is set. Defaults to `Manual` unless it''s a Generic Push Device where it will default to `N/A`. ' default: Manual readOnly: true example: Every 15th minute past every hour LastBackupAttempt: type: string description: 'Timestamp of last attempted backup. ' example: '2021-01-18T23:59:59.999Z' readOnly: true LastSuccessfulBackup: type: string description: 'Timestamp of last completed backup. ' example: '2021-01-16T23:59:59.999Z' readOnly: true NextBackup: type: string description: 'Timestamp of next scheduled backup. ' example: '2021-01-20T23:59:59.999Z' readOnly: true Baseline: type: boolean description: Whether the current backup is an approved configuration. example: true readOnly: true State: type: string description: Current state of the device. example: Processing readOnly: true Status: type: string description: Current status indicator. example: InProgress readOnly: true enum: - Error - Disabled - InProgress - OK ComplianceScore: type: integer description: 'The percentage compliance score of the device. Omitted if no compliance policies have been run against the device. ' example: 69 readOnly: true ComplianceStatus: type: string description: 'The compliance status of the device based on compliance score. Passed if 100, Failed if between 0 and 100 and N/A if -1 policies have been run against the device. ' example: Failed readOnly: true enum: - Passed - Failed - N/A Up: type: boolean description: 'Whether or not a device is up. Omitted if no monitors are set for this device. ' example: true Uptime: type: number description: 'Percentage of time the device has been monitored as up. `-1` means Not Monitored. ' example: 100 readOnly: true BackupSize: type: integer description: Size of all backups for this device on disk in bytes. example: 123456 readOnly: true SetupComplete: type: boolean description: Whether or not a device setup is completed. A completed device setup includes enough information to take a backup. example: true readOnly: true Model: type: string description: Device's model. example: WS-C2950-24 readOnly: true LastSuccessfulBackupID: type: integer description: ID of the last successful backup example: 123456 readOnly: true required: - Name - PluginKey - PluginFields - Address - Protocol responses: '200': description: OK content: application/json: schema: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema' '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: Name: - Must not be blank DomainID: - Domain with ID 123 does not exist - Can only be set on device creation LabelIDs[0]: - Label with ID 123 does not exist Monitor: - Must be set Monitor.AlertFail: - Must be a positive number AssetFields[0].ID: - Must be set - Assetfield ID 123 does not exist AssetFields[0].Value: - Must be set PluginKey: - Must not be blank - Plugin 'foo' does not exist NotificationEmails[0]: - Is not a valid email address BackupSchedules[0].Schedule: - Must be set - Is not a valid Skylar Compliance schedule expression BackupSchedules[0].ConfigTypes[0]: - Must not be blank - Config type 'bar' is not valid for plugin 'foo' ManualConfigTypes[0]: - Must not be blank - Config type 'bar' is not valid for plugin 'foo' Address: - Must not be blank (except for Push Devices) - Must be a valid IP address AgentID: - Agent with ID 123 does not exist Protocol: - Must not be blank (except for Push Devices) CredentialID: - Credential set with ID 123 does not exist FailurePolicy.Retries: - Must be either a positive integer lesser then 168 or -1 since `PluginKey` is `push_device` - Must be an integer between -1 and 6 since `PluginKey` is not `push_device` FailurePolicy.Action: - Has to be one of 'Revert', 'Manual' or 'Disable' FailurePolicy.Alerts: - Must be an integer between 0 and 3 since `PluginKey` is `push_device` - Must be either -1, 0, 1 or `FailurePolicy.Retries+1` since `PluginKey` is not `push_device` FailurePolicy.RetryInterval: - Must be a positive number UseAutoApply: - Can only be set on device creation PolicyIDs[0]: - Policy with ID 123 does not exist '403': description: Forbidden content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' examples: Global: value: message: Maximum number of devices reached Domain: value: message: Maximum number of devices in domain reached parameters: [] patch: summary: Patch multiple devices tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevice operationId: patch_devices description: Patches multiple devices at once requestBody: required: true content: application/json: schema: title: Devices Patch Request Body type: object description: Devices patch request body model properties: DeviceIDs: description: Device IDs type: array items: type: integer example: 123 Disabled: description: Device disabled type: boolean example: true AgentID: type: integer description: 'ID of the [Agent](#tag/Agent) that should manage the given devices. The devices need to be in the agent''s domain, otherwise the request will fail. ' default: 0 example: 123 CredentialID: type: integer description: 'ID of the [Credential](#tag/Credential) that should be applied to the given devices. The devices need to be in the credential''s domain, otherwise the request will fail. ' example: 123 PolicyIDs: type: array items: type: integer example: 123 description: 'List of [Policy](#tag/Policy) IDs that should be applied to the given devices. The policies need to be in each of the devices'' domains, otherwise the request will fail. ' example: 123 NotPolicyIDs: type: array items: type: integer example: 123 description: 'List of [Policy](#tag/Policy) IDs that should not be applied to the given devices. The policies need to be in each of the devices'' domains, otherwise the request will fail. ' example: 123 ReplacePolicies: type: boolean description: 'If true, replaces all existing policies with the new ones provided in the request. If false, adds the new policies to the existing ones. ' PluginKey: type: string description: 'Key of [Plugin](#tag/Plugin) used for all devices ' DomainID: type: integer description: 'ID of the [Domain](#tag/Domain) where the devices should be located. ' LabelIDs: type: array items: type: integer example: 123 description: 'List of [Label](#tag/Label) IDs that should be applied to the given devices. ' ReplaceLabels: type: boolean description: 'If true, replaces all existing labels with the new ones provided in the request. If false, adds the new labels to the existing ones. ' DisabledUntil: type: string description: 'Timestamp of when to re-enable devices if they are disabled. Pass an empty string `""` to disable a device forever. ' example: '2021-01-18T23:59:59.999Z' DisabledReason: type: string description: 'Reason for disabling devices if they are disabled. Only applicable if `DisabledUntil` is not empty. ' BackupPrefix: type: string description: 'Prefix for backup files created by the devices. ' NotificationEmails: type: array items: type: string example: example@example.com description: 'List of email addresses to receive notifications for the devices. ' ReplaceNotificationEmails: type: boolean description: 'If true, replaces all existing notification emails with the new ones provided in the request. ' Notifications: type: object properties: OnConfigChange: type: boolean description: 'Send notification if a configuration change has been detected (compares current with previous backup) `false` - Off, `true` - On ' OnBackupStart: type: boolean description: Notify when a scheduled backup starts, `false` - Off, `true` - On OnBackupEnd: type: boolean description: Notify when a scheduled backup finishes, `false` - Off, `true` - On Monitor: type: object properties: Enabled: type: boolean description: "Denotes if monitoring is enabled/disabled or a mix for the given list of devices. Pass `true` to enable\nmonitoring for all devices and `false` to disable monitoring \n" AlertFail: type: integer description: 'Regard as down after this many failures. Must be greater than `0` when `Monitor.Enabled` is `true`. ' example: 2 IsPing: type: boolean description: Perform ICMP ping rather than TCP connect, `false` - Off, `true` - On AlertEmail: type: boolean description: Send alert email to owner after AlertFail failures, `false` - Off, `true` - On AlertEmailUp: type: boolean description: Send alert email to owner when device is back up, `false` - Off, `true` - On Protocol: type: string description: 'Protocol of devices. ' example: SSH BackupSchedules: type: array items: type: object properties: Schedule: type: string description: A [cron-like expression](#section/Schedules) example: 15 * * * * RetainVersions: type: integer description: How many different versions of backups to keep example: 5 RetainDays: type: integer description: How many days to retain backups example: 5 DeleteDays: type: integer description: How many days until backups are deleted. example: 5 ReplaceBackupSchedules: type: boolean description: 'If true, replaces all existing backup schedules with the new ones provided in the request. If false, adds the new backup schedules to the existing ones. ' FailurePolicy: type: object description: 'What should Skylar Compliance do when a device encounters an error taking backups. ' properties: Retries: type: integer minimum: -1 maximum: 6 description: "Sets the retry policy. When `PluginKey` is `push_device`, it holds the interval between each retry, in hours. \nIf not, it holds the number of attempts. Special values are `0` (Always), which only applies when `PluginKey`\nis not `push_device` and `-2` (Never)\n" example: 0 Action: type: string description: 'Which action to take once the maximum amount of attempts have failed. This will either `Revert` to schedule, set a device to `Manual` backups or `Disable` a device. Only applies to devices which `PluginKey` is not `push_device` ' default: Revert enum: - '[Multiple]' - Revert - Manual - Disable example: Disable Alerts: type: integer description: Number of attempts needed to trigger an alert. `0` means Always and `-2` Never example: 0 RetryInterval: type: integer description: Time to wait before attempting a retry in minutes. Only applies to devices which `PluginKey` is not `push_device` example: 15 AssetFields: type: array description: 'List of [Assetfields](#tag/SettingsAssetField) with device specific data ' items: type: object properties: ID: type: integer description: Internal [Assetfield](#tag/SettingsAssetField) ID example: 123 Value: type: string description: Asset field value example: Example Location InfoCommandIDs: type: array description: 'List of [InfoCommand](#tag/InfoCommand) IDs to execute on the devices ' items: type: integer example: 123 ReplaceInfoCommandIDs: type: boolean description: 'If true, replaces all existing info command IDs with the new ones provided in the request. If false, adds the new info command IDs to the existing ones. ' ManualConfigTypes: type: array description: "List of config types to be backed up by the given devices. \nRequires `PluginKey` to be filled.\n" items: type: string example: - ssh - apache PluginFields: type: object description: 'Plugin-specific fields as key-value pairs. The available fields depend on the selected plugin. Common fields include `username`, `password`, `backup_port`, etc. Requires `PluginKey` to be filled. ' additionalProperties: type: string example: username: admin password: secret123 enable: enable_pass backup_port: '22' required: - DeviceIDs responses: '200': description: OK content: application/json: schema: type: object description: Patch device response properties: UpdatedCount: description: Total updated devices type: integer '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: DeviceIDs: - Must not be empty NotPolicyIDs: - Must not be empty DisabledUntil: - Must be set if DisabledReason is set Monitor.AlertFail: - Must be a positive number PluginKey: - Must be set if Protocol is set - Must be set if PluginFields is set - Must be set if ManualConfigTypes is set - Plugin 'foo' does not exist Protocol: - Must not be blank (except for Push Devices) '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' examples: NoPatchField: value: message: No changes were provided on the request body errors: PatchDevices: - no fields provided for patch DomainValidation: value: message: Domain validation failed errors: AgentID: - Incompatible agent. You must replace the agent to complete the domain change. LabelIDs: - Incompatible labels. You must replace all labels to complete the domain change. CredentialID: - Incompatible credentials. You must replace the credentials to complete the domain change. PolicyIDs: - Incompatible policies. You must replace all policies to complete the domain change. InfoCommandIDs: - Incompatible info commands. You must replace all info commands to complete the domain change. /devices/{id}: parameters: - schema: type: integer name: id description: device id in: path required: true get: summary: Retrieve a device tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ViewDevices responses: '200': description: OK content: application/json: schema: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema' '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Device does not exist errors: ID: - Device with ID 123 does not exist operationId: get_device description: Retrieve a single device put: summary: Update a device tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevice operationId: update_device requestBody: required: true content: application/json: schema: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema' responses: '200': description: OK content: application/json: schema: $ref: '#/paths/~1devices/post/requestBody/content/application~1json/schema' '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices/post/responses/400/content/application~1json/example' '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' delete: summary: Delete a device tags: - Device security: - Cookie: [] - Token: [] - Permissions: - DeleteDevice operationId: delete_device responses: '204': description: Device deleted '403': description: Forbidden content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Device not disabled errors: ID: - Device with ID 123 is not disabled '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' /devices/{id}/monitors: parameters: - schema: type: integer name: id description: device id in: path required: true - schema: type: integer name: period description: Number of seconds between measurements. If requested period is narrower then the monitor's period, all measurements will be retrieved in: query required: true - in: query name: limit schema: type: integer minimum: 1 maximum: 500 default: 50 description: The numbers of items to return get: summary: Retrieve monitor measurements tags: - Device operationId: monitor_device description: Get the a device's most recent monitor responses security: - Cookie: [] - Token: [] - Permissions: - ViewDeviceauth responses: '200': description: OK content: application/json: schema: type: object properties: Period: type: integer description: Requested number of seconds between measurements example: 5 Measurements: description: List of measurements type: array items: type: object properties: Created: type: string description: Timestamp in [RFC3339](https://tools.ietf.org/html/rfc3339) format example: '2222-02-22T22:22:22.000Z' RoundTripTime: type: number format: float description: Network round-trip time for checking on the device in milliseconds example: 1.23456789 '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' /devices/{id}/knownhosts: parameters: - schema: type: integer name: id description: device id in: path required: true delete: summary: Clear SSH known hosts tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevices responses: '204': description: Known hosts removed '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' operationId: clear_known_hosts description: Clear known SSH hosts for a device /devices/{id}/compliance: parameters: - schema: type: integer name: id description: device id in: path required: true - schema: type: array items: type: integer in: query name: policy_id[] required: true style: form explode: true description: List of compliance policy IDs to run. get: summary: Test device compliance tags: - Device operationId: device_compliance description: Test compliance policies against a device's latest configuration. security: - Cookie: [] - Token: [] - Permissions: - ModifyDevicePolicy responses: '200': description: Compliance test results content: application/json: schema: title: ComplianceResults type: object description: Compliance test results model properties: Results: description: A list of compliance rule test results. readOnly: true type: array items: type: object properties: Rule: $ref: '#/paths/~1policies~1%7Bid%7D~1rules/post/requestBody/content/application~1json/schema' PolicyID: type: integer description: The ID of the policy to which the tested rule belongs example: 321 Tested: type: boolean description: 'Whether the policy was actually tested. Some rules might be skipped if no matching backups can be found. ' example: true Passed: type: boolean description: Whether the policy passed testing. example: true Alert: type: boolean description: Indicates if this policy test would have triggered an alert. example: false Score: type: integer description: Score of passing. The value may be determined by the type of test. Details: type: string description: Details including relevant files and reasons. example: '"files: tmp/foo.txt, tmp/bar.txt\nreasons: tmp/foo.txt: 7 | match me, tmp/bar.txt: 3 | don''t match me" ' Error: type: string description: Any errors that ocurred whilst testing the rule '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: policy_id[0]: - Policy with ID 123 does not exist '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' /devices/{id}/plugincommand/{command}: parameters: - schema: type: integer name: id description: Device ID in: path required: true - schema: type: string name: command description: Plugin command name in: path required: true get: summary: Perform a plugin command on a device tags: - Device operationId: device_plugin_command description: Perform a plugin command on a device primarily to get a device asset value security: - Cookie: [] - Token: [] - Permissions: - CommandDevice responses: '200': description: Result from performing a plugin command on a device content: application/json: schema: title: Result type: object description: Plugin command result properties: Result: description: Plugin command result readOnly: true type: string example: FGVMEVHSBXXV7Z10 required: - Result '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' '500': description: Internal Server Error content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' /devices/search: post: summary: Global search tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ViewBackup operationId: global_search description: Search across devices and configurations requestBody: required: true content: application/json: schema: type: object properties: Search: type: string description: Search term (case-insensitive) example: interface SearchType: type: string description: Search type enum: - string - regex example: regex LimitAge: type: integer description: Restrict search to configuration not older that this many days. `0` means unlimited default: 0 example: 1 LimitVersions: type: integer description: Limit search to last X. `0` for unlimited. Defaults to last version. default: 1 example: 0 DeviceIDs: type: array description: Include configuration from the given [Device](#tag/Device) IDs items: type: integer example: - 123 - 124 - 125 NextPagination: title: Search Pagination type: object properties: LastSeen: type: string description: The timestamp of the backup to be paged into example: '2021-01-18T23:59:59.999Z' BID: type: integer description: Backup ID of the backup to be paged into example: 124 Filepath: type: string description: The file to be paged into within that backup example: /foo/bar/config.txt Offset: type: integer description: The byte offset within the file to be paged into example: 123 FileLineOffsets: type: object additionalProperties: type: integer description: Map of file paths to their cumulative line offsets for tracking line numbers across pagination example: /foo/bar/config.txt: 150 /foo/bar/logs.txt: 75 Size: type: integer description: The number of matches per page example: 50 required: - Search - SearchType - DeviceIDs responses: '200': description: OK content: application/json: schema: type: object properties: data: type: array description: Global search results items: type: object properties: DeviceID: type: integer description: The [Device](#tag/Device) ID example: 123 DeviceName: type: string description: Name of the [Device](#tag/Device) example: My First Cisco DomainID: type: integer description: ID of the device's [Domain](#tag/Domain) example: 123 DomainName: type: string description: Name of the device's [Domain](#tag/Domain) example: Production PluginName: type: string description: Name of device's plugin example: Cisco IOS XE Results: type: array description: Device search results items: type: object properties: BackupID: type: integer description: ID of the [configuration backup](#tag/DeviceBackup) a match was found example: 123 ConfigName: type: string description: Name of the configuration default: _default example: running Description: type: string description: Description of where a match was found example: Version 68 - ucs var/tmp/tmsh_syntax/14.1.2/auto_schema_data_apm_cli.dat File: type: string description: Filename of file with match example: config/.diffVersions/config/BigDB.dat/BigDB.dat InName: type: boolean description: Set to `true` if a match was found in the filename. This can only be true if SearchType is `string` example: true SearchResultsCount: type: integer description: Number of search results that are present in the file MatchedLines: type: array description: Lines that matched the search term. It's only returned if SearchType is `regex` items: type: object properties: Content: type: string description: The line of the match example: interface Ethernet1/1 Number: type: integer description: The line number of the match example: 1234 Match: type: string description: The part of the line that matched the search term example: interface required: - Content - Number - Match required: - BackupID - ConfigName - Description - File - InName - SearchResultsCount required: - DeviceID - DeviceName - DomainID - DomainName - PluginName - Results next_pagination: $ref: '#/paths/~1devices~1search/post/requestBody/content/application~1json/schema/properties/NextPagination' truncated: type: boolean description: Set to `true` if the search timed out and only partial results are returned. Use `next_pagination` to continue the search. parameters: [] /devices/import: post: summary: Import devices tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevice operationId: import_devices description: Import devices from a CSV files requestBody: required: true content: multipart/form-data: schema: type: object properties: overwrite: type: boolean description: Overwrite existing devices default: false example: true file: type: string description: CSV data (see [Export](#operation/export_devices) for format) example: 'name,plugin,ip_address,protocol,owner,backup_interval,ccinform,keep_backup,notes,serial_no,asset_id,location,domain_name,snmp_version,use_dsa,monitor_ping,monitor_port,monitor_email,monitor_email_up,monitor_freq,monitor_fail,syslog_trigger,no_syslog_email,backup_config_types,email_backup_start,email_backup_end,backup_prefix,max_retries,Firmware_assetkey_text,Manufacturer_assetkey_text,Model_assetkey_text example1,Cisco ASA,127.0.0.1,ssh,afox@skylarcompliance.com,,N,5,,,,Example Rack,Global,,N,N,,N,N,,,N,N,startup#running#full,N,N,id#name#,2,7.2(3),Cisco,ASA/FWSM example2,Cisco ASA,127.0.0.1,ssh,afox@skylarcompliance.com,,N,5,,,,,Global,,N,N,22,Y,N,5,1,N,N,startup#running,N,N,id##,2,9.9(2)18,Cisco,ASAv ' responses: '200': description: OK content: application/json: schema: type: object properties: NumberImported: type: integer description: Number of devices that have been imported example: 123 DevicesNotImported: type: object additionalProperties: type: array items: type: string description: Map of device's IP address to the corresponding error message(s) that occurred during import of the device example: 10.0.0.1: - device already exists 10.0.0.2: - 'unknown plugin: xxyyzz' '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: file: - Invalid CSV format /devices/export: post: summary: Export devices tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ExportDevices operationId: export_devices description: Export a selection of devices as CSV requestBody: required: true content: application/json: schema: type: object properties: DeviceIDs: type: array description: 'A list of [Device](#tag/Device) IDs to export ' items: type: integer example: 123 default: [] example: - 1 - 2 - 3 Filename: type: string description: Filename of the resulting CSV file default: RPDevices RedactCredentials: type: boolean description: Omit columns containing sensitive information default: false example: true ExportCredentialsSet: type: boolean description: Exports credential set ID default: false example: true IncludeAssets: type: boolean description: Wether to include asset information fields in the export default: true example: false OmitEmptyColumns: type: boolean description: Omit empty columns from the resulting CSV default: false example: true required: - DeviceIDs responses: '200': description: OK content: text/csv: schema: type: string example: 'name,plugin,ip_address,protocol,owner,backup_interval,ccinform,keep_backup,notes,serial_no,asset_id,location,domain_name,snmp_version,use_dsa,monitor_ping,monitor_port,monitor_email,monitor_email_up,monitor_freq,monitor_fail,syslog_trigger,no_syslog_email,backup_config_types,email_backup_start,email_backup_end,backup_prefix,max_retries,Firmware_assetkey_text,Manufacturer_assetkey_text,Model_assetkey_text example1,Cisco ASA,127.0.0.1,ssh,afox@skylarcompliance.com,,N,5,,,,Example Rack,Global,,N,N,,N,N,,,N,N,startup#running#full,N,N,id#name#,2,7.2(3),Cisco,ASA/FWSM example2,Cisco ASA,127.0.0.1,ssh,afox@skylarcompliance.com,,N,5,,,,,Global,,N,N,22,Y,N,5,1,N,N,startup#running,N,N,id##,2,9.9(2)18,Cisco,ASAv ' headers: Content-Disposition: schema: type: string example: attachment; filename="SkylarComplianceDevices.csv" '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: DeviceIDs: - Must not be blank Filename: - Must not be blank /devices/test: post: summary: Test device login tags: - Device security: - Cookie: [] - Token: [] - Permissions: - AddDevice operationId: test_device description: Test device connection and login details requestBody: required: true content: application/json: schema: title: TestDeviceRequest type: object description: Test device login parameters properties: DomainID: type: integer description: ID of the [Domain](#tag/Domain) a device belongs to (if any). Only allowed to be set during device creation. default: 0 example: 123 PluginKey: type: string description: A [Plugin](#tag/Plugin) identifier (`key`) that sets the plugin a device uses example: cisco_ios PluginFields: type: array description: 'List of additional fields for a device, determined by the device plugin. Common field names are `username`, `password`, `password2`, `backup_port`, `nat_bc`. ' items: type: object properties: Name: type: string description: Name of plugin field example: username Value: type: string description: Value of plugin field example: afox required: - Name Address: type: string description: Network address of the device example: 127.0.0.1 AgentID: type: integer description: 'ID of an [Agent](#tag/Agent) this device should communicate through. The default `0` means that Skylar Compliance will communicate with a device directly ' default: 0 Protocol: type: string description: Connection protocol to use. Check device's plugin for supported protocols example: scp CredentialID: type: integer description: 'ID of the [Credential](#tag/Credential) assigned to this device. Credentials take precedence over any username or password set for the device ' default: 0 example: 123 UsePublicKeyAuthentication: type: boolean default: false description: 'Use public key for authenticating device connections over SSH. See [Settings/PublicKey](#tag/SettingsPublicKey) how to retrieve those for your appliance. ' required: - PluginKey - PluginFields - Address - Protocol responses: '200': description: OK content: application/json: schema: type: object properties: Device: type: string description: Name of the device example: New Device Result: type: string description: Result of the connection attempt example: Timeout IsError: type: boolean description: If the connection attempt was successful example: true Log: type: string description: A log of the connection attempt example: "Progress: 1/46 (2%)\tTime:0.00s\tStatus: Startup Device: Control linux_server ssh (v25519)\nProgress: 2/46 (4%)\tTime:0.00s\tStatus: /usr/bin/ssh -p 22 127.0.0.1\nProgress: 3/46 (6%)\tTime:0.08s\tStatus: Running Custom Login sequence\nProgress: 4/46 (8%)\tTime:0.14s\tStatus: Running ssh Login sequence\nProgress: 13/46 (28%)\tTime:0.18s\tStatus: Wait Cmd (90s): No route to host,IDENTIFICATION HAS CHANGED,onnection refused,onnection timed out,co...l major versions differ: 2 vs. 1,no matching host key,ermission denied,User,assword,passwd:,PASSCODE\nProgress: 14/46 (30%)\tTime:0.18s\tStatus: Got Cmd: assword\nProgress: 15/46 (32%)\tTime:2.18s\tStatus: Send Cmd: \\n\nProgress: 21/46 (45%)\tTime:2.28s\tStatus: Wait Cmd (60s): >,#,$,option:,Main menu,TERM\nProgress: 22/46 (47%)\tTime:62.29s\tStatus: Error - Timeout\nProgress: 23/46 (50%)\tTime:62.29s\tStatus: Finished ssh Login sequence\nProgress: 24/46 (52%)\tTime:62.29s\tStatus: Closing ssh\nProgress: 25/46 (54%)\tTime:63.29s\tStatus: Closed ssh\nProgress: 26/46 (56%)\tTime:63.29s\tStatus: Stopping Connection: ssh\nProgress: 27/46 (58%)\tTime:63.29s\tStatus: Closing ssh\nProgress: 28/46 (60%)\tTime:64.29s\tStatus: Closed ssh\nProgress: 29/46 (63%)\tTime:64.29s\tStatus: Stop Device: ssh\nProgress: 30/46 (65%)\tTime:64.29s\tStatus: Finished Control\n\nTranscript for RP00000006: linux_server (v25519) Control using ssh.\n\nRECV: 0.04s: Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.\\r\\n\\rroot@127.0.0.1's password: \nSEND: 2.28s: \\n\nRECV: 2.28s: \\nPermission denied, please try again.\\r\\n\\rroot@127.0.0.1's password: \\n" '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: DomainID: - Domain with ID 123 does not exist - Can only be set on device creation PluginKey: - Must not be blank - Plugin 'foo' does not exist Address: - Must not be blank (except for Push Devices) - Must be a valid IP address AgentID: - Agent with ID 123 does not exist Protocol: - Must not be blank (except for Push Devices) CredentialID: - Credential set with ID 123 does not exist parameters: [] /devices/count: parameters: - schema: type: string example: agent_id name: group description: a device search parameter that should be used to group device counter in: query required: true - in: query name: filter_op description: Filter operation to use, either "and" or "or" schema: type: string enum: - and - or - in: query name: fulltext schema: type: string description: Only return records matching the search term. Must have at least 3 characters - in: query name: updated_after schema: type: string example: '2020-01-02T15:04:05.999Z' description: Timestamp (UTC) to include results after the updated date. - in: query name: updated_before schema: type: string example: '2023-01-02T15:04:05.999Z' description: Timestamp (UTC) to include results before the updated date. - in: query name: label_id[] schema: type: array items: type: string description: List of labels IDs to include in the results - in: query name: not[label_id][] schema: type: array items: type: string description: List of label IDs to exclude from the results - in: query name: manufacturer[] schema: type: array items: type: string description: List of manufacturers to include in the results example: - Cisco - BigIP - in: query name: not[manufacturer][] schema: type: array items: type: string description: List of manufacturers to exclude from the results example: - Solarwinds - in: query name: plugin_key[] schema: type: array items: type: string description: List of plugin keys to include in the results example: - cisco_ios - in: query name: not[plugin_key][] schema: type: array items: type: string description: List of plugin keys to exclude from the results example: - cisco_asa - in: query name: location[] schema: type: array items: type: string description: List of locations to include in the results example: - Comms Rack - ESX Server 1 - in: query name: not[location][] schema: type: array items: type: string description: List of locations to exclude from the results example: - Home Office - in: query name: domain_id[] schema: type: array items: type: integer description: List of domain IDs to include in the results - in: query name: not[domain_id][] schema: type: array items: type: integer description: List of domain IDs to exclude from the results - in: query name: backupstatusstring[] schema: type: array items: type: string description: List of backup status to include in the results example: - OK - in: query name: not[backupstatusstring][] schema: type: array items: type: string description: List of backup status to exclude from the results example: - Failed - in: query name: agent_id[] schema: type: array items: type: integer description: List of agent IDs to include in the results - in: query name: not[agent_id][] schema: type: array items: type: integer description: List of agent IDs to exclude from the results - in: query name: protocol[] schema: type: array items: type: string description: List of protocols to include in the results example: - ssh - ftp - in: query name: not[protocol][] schema: type: array items: type: string description: List of protocols to exclude from the results example: - telnet/tftp - in: query name: compliancestatus[] schema: type: array items: type: string description: List of compliance status to include in the results - in: query name: not[compliancestatus][] schema: type: array items: type: string description: List of compliance status to exclude from the results - in: query name: lastbackupattempt_before schema: type: string description: Timestamp to include results before the last backup attempt date. - in: query name: lastbackupattempt_after schema: type: string description: Timestamp to include results after the last backup attempt date. - in: query name: lastbackup_before schema: type: string description: Timestamp to include results before the last backup. - in: query name: lastbackup_after schema: type: string description: Timestamp to include results after the last backup date. - in: query name: disabled schema: type: boolean description: Disabled status to include in the results - in: query name: up schema: type: boolean description: Device monitored up status to include in the results - in: query name: serial[] schema: type: array items: type: string description: List of serial numbers to include in the results example: - FCZ1047W0F9 - FKD1227W0F9 - in: query name: not[serial][] schema: type: array items: type: string description: List of serial numbers to exclude from the results example: - FJJ13427W0D1 - in: query name: firmware[] schema: type: array items: type: string description: List of firmwares to include in the results example: - IOS 12.1(22)EA4 - IOS 11.4(14)EA4 - in: query name: not[firmware][] schema: type: array items: type: string description: List of firmwares to exclude from the results example: - IOS 10.1(34)EA2 - in: query name: assetid[] schema: type: array items: type: string description: List of assetids to include in the results example: - 10101010ID - ThisAssetiD - in: query name: not[assetid][] schema: type: array items: type: string description: List of assetids to exclude from the results example: - 10101010Id - in: query name: baseline[] schema: type: array items: type: string description: Baseline status to include in the results example: - 1 - in: query name: not[baseline][] schema: type: array items: type: string description: Baseline status to exclude in the results example: - 0 - in: query name: nextbackup_before schema: type: string description: Timestamp to include results before the next backup attempt date. - in: query name: nextbackup_after schema: type: string description: Timestamp to include results after the next backup attempt date. - in: query name: model[] schema: type: array items: type: string description: List of models to include in the results example: - WS-C2950-24 - in: query name: not[model][] schema: type: array items: type: string description: List of models to exclude in the results example: - WS-C2950-24 - in: query name: state[] schema: type: array items: type: string description: List of states to include in the results example: - Idle - in: query name: not[state][] schema: type: array items: type: string description: List of states to exclude in the results example: - Idle get: summary: Get total number of devices grouped by some device field tags: - Device operationId: get_device_counters security: - Cookie: [] - Token: [] - Permissions: - ViewDeviceauth responses: '200': description: OK content: application/json: schema: type: object properties: Counters: type: array items: type: object properties: Group: description: Group value for request group type: string example: cisco_asa Total: description: Total number of devices per group value type: integer example: 4 /devices/{id}/assetfields/{assetfield_id}/upload: parameters: - schema: type: integer name: assetfield_id description: Assetfield ID in: path required: true - schema: type: integer name: id description: Device ID in: path required: true post: summary: Upload a file for an assetfield tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevice operationId: upload_assetfield_file description: Upload a file as a device's assetfield value. The asset field has to be of type `file`. requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string description: The actual file format: binary required: - file responses: '204': description: File uploaded '400': description: Bad Request content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Input validation failed errors: AssetfieldID: - Is not a file upload type field File: - Must not be blank '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1devices~1%7Bid%7D/get/responses/404/content/application~1json/example' parameters: [] /policies/{id}/scores: parameters: - schema: type: integer name: id description: Policy ID in: path required: true put: summary: Update policy's devices' compliance scores tags: - Device security: - Cookie: [] - Token: [] - Permissions: - ModifyDevice operationId: update_policy_devices_scores requestBody: required: false content: application/json: schema: type: object responses: '200': description: OK content: text/plain: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: $ref: '#/paths/~1policies~1%7Bid%7D/get/responses/404/content/application~1json/example' '500': description: Internal Server Error content: application/json: schema: $ref: '#/paths/~1jobs/get/responses/401/content/application~1json/schema' example: message: Unable to handle update policy's devices' compliance scores components: securitySchemes: Cookie: description: 'The Skylar Compliance web interface uses session cookies to authenticate API requests coming from a user''s browser. Please use authentication tokens when integrating with the Skylar Compliance API programmatically. Example header: ```http Cookie: session=abcde12345; Path=/; HttpOnly ``` ' type: apiKey in: cookie name: session Token: description: 'To integrate with the Skylar Compliance API, please use the web interface to create API tokens. API requests via token should pass an `Authorization` header using the `Custom` prefix. Example header: ```http Authorization: Custom qVUXmMhPsle3NVU... ``` ' type: apiKey in: header name: Authorization Permissions: description: 'Lists required [Permissions](#tag/Permission) for each individual endpoint. **Please note:** Whilst this authentication method is listed as an OpenID Connect authentication type, it is only used for the purposes of displaying the required permissions on each endpoint and is _not_ a valid authentication method by itself. - `ModifyDevice` - `BackupDevice` - `RestoreDevice` - `CommandDevice` - `ViewDeviceauth` - `ViewDevices` - `ListBackups` - `ViewBackup` - `ExportBackup` - `ModifyBackup` - `ViewLogs` - `ViewSyslogs` - `ViewSysadmin` - `UpdateSysadmin` - `ModifyUser` - `ViewUsers` - `ViewUserauth` - `ViewRoles` - `EditRoles` - `ModifyDiscovery` - `ListTemplates` - `ViewTemplate` - `ModifyTemplate` - `PushTemplate` - `ViewFirmware` - `ModifyFirmware` - `PushFirmware` - `ViewCredentials` - `ModifyCredentials` - `ModifyAssets` - `ViewAssets` - `ViewDomain` - `ModifyDomain` - `ViewDevicePolicy` - `ModifyDevicePolicy` - `ApplyDevicePolicy` - `ViewPassrules` - `ModifyPassrules` - `ViewRadius` - `ModifyRadius` - `ViewReports` - `ModifyReports` - `ArchivePlatform` - `ViewBackupSchedule` - `ModifyBackupSchedule` - `ViewLegacyReportAssets` - `ViewLegacyReportCompliance` - `ViewLegacyReportAdmin` - `ViewLegacyReportConfig` - `ViewLegacyReportBackups` - `ViewLegacyReportDashboard` - `ViewLegacyReportMonitor` - `AddDevice` - `DeleteDevice` - `ExportDevices` - `ExportUsers` - `ModifyLabels` - `ModifyTokens` - `OpenTerminal` - `ViewAllSchedules` - `ModifyAllSchedules` - `ViewDeviceCommand` - `ModifyDeviceCommand` - `ViewUnredactedBackup` ' type: openIdConnect openIdConnectUrl: https://ignore.example.com