NAV
Curl JavaScript Node.JS Go Python Ruby

Introduction

Getting started

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

This is a developer guide for Outpost24's full stack security assessment platform REST API.

The REST API specification in OpenAPI Specification (OAS) 3.0 format is available on Outpost24's SaaS platform and the HIAB appliances.

To explore the API, scroll through the index on the left or paste the content of the OAS specification in the Swagger editor.

Base URL for all API requests

Response codes

Unsupported HTTP verbs will return 405 or 400.

Authentication

The REST API uses JWT tokens for granting access to the API's resources.

To authenticate, use this code:

# You can also use wget
curl -X POST \
  https://outscan.outpost24.com/opi/rest/auth/login \
  -d 'username=your_username' \
  -d 'password=your_password'

Successful response:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPdXRwb3N0MjQiLCJ...

There are 2 ways to generate a new token:

  1. Login with username and password by sending a POST request to /auth/login

  2. Call GET /auth/login with an existing, valid token

curl -X GET \
  https://outscan.outpost24.com/opi/rest/auth/login \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'

Token expiration time

To set custom expiration time of the JWT token:

curl -X POST \
  https://outscan.outpost24.com/opi/rest/auth/login \
  -d 'username=your_username' \
  -d 'password=your_password' \
  -d 'validUntil=2019-10-15T15%3A50%3A00Z'

The default validity period for the generated tokens is 10 minutes. It's possible to set a custom expiration time for the tokens by submitting the optional parameter validUntil.

Example request

curl -X GET \
  'https://outscan.outpost24.com/opi/rest/exploits?limit=1' \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...

To authenticate to the API resources, submit the generated JWT token in the Authorization header.

Access

This table presents a user role access matrix with the defined in the system user roles, API collections and actions.

Method Collection Description admin user support licensemanager legal pcioperator swatservice superswatservice customersuccess msspmanager
GET /accounts/{accountId} Get an account x 1)
DELETE /accounts/{accountId} Delete an account x 1)
PATCH /accounts/{accountId} Partially update an account x 1)
PUT /accounts/{accountId}/tags/{tagId} Create a link to a tag x 1)
DELETE /accounts/{accountId}/tags/{tagId} Delete a link to a tag x 1)
GET /accounts Get a list of accounts x 1)
POST /accounts Create an account x 1)
HEAD /accounts Get header with count x 1)
PUT /accounts/{accountId}/tags Modify linked set of tags x 1)
GET /agents/installers/download Download an agent installer (Deprecated: 2024-5-21) x 1)
POST /agents/installers/download Request for creating an agent installer x 1)
GET /agents/{agentUuid}/logs Get agent logs x 1)
GET /agents/version Retrieve the agent version x 1)
GET /agents/installers/configuration Download agent installer configuration file x 1)
GET /agents/installers Get agent installers x 1)
GET /analytics/appstaks Get a list of appstaks x 1)
HEAD /analytics/appstaks Get header with count x 1)
GET /analytics/appstaks/trend/summary Get a list of asset trends x 1)
GET /analytics/asset-groups Get a list of resource groups x 1)
HEAD /analytics/asset-groups Get header with count x 1)
GET /analytics/assets Get a list of assets x 1)
HEAD /analytics/assets Get header with count x 1)
GET /analytics/assets/trend/summary Get a list of asset trends x 1)
GET /analytics/categories Get a list of categories x 1)
HEAD /analytics/categories Get header with count x 1)
GET /analytics/compliance/findings Get a list of compliance findings x 1)
HEAD /analytics/compliance/findings Get header with count x 1)
GET /analytics/compliance/polices Get a list of compliance policies x 1)
HEAD /analytics/compliance/polices Get header with count x 1)
GET /analytics/compliance/summary Get compliance summary x 1)
GET /analytics/compliance/trend/summary Get a list of compliance trends x 1)
GET /analytics/findings Get a list of assets x 1)
HEAD /analytics/findings Get header with count x 1)
GET /analytics/findings/trend/summary Get a list of finding trends x 1)
GET /analytics/appstaks/summary Get appstaks summary x 1)
GET /analytics/asset-groups/summary Get asset groups summary x 1)
GET /analytics/assets/summary Get assets summary x 1)
GET /analytics/findings/summary Get findings summary x 1)
GET /appstak-categories/{categoryId} Get an category x 1)
DELETE /appstak-categories/{categoryId} Delete an category x 1)
GET /appstak-categories Get a list of categories x 1)
POST /appstak-categories Create a category x 1)
HEAD /appstak-categories Get header with count x 1)
PATCH /appstak-categories/{appStakCategoryId} Partially update a category x 1)
GET /appstaks/{appStakId} Get an appstak x 1)
DELETE /appstaks/{appStakId} Delete an appstak x 1)
PATCH /appstaks/{appStakId} Partially update an appstak x 1)
PUT /appstaks/{appStakId}/tags/{tagId} Create a link to a tag x 1)
DELETE /appstaks/{appStakId}/tags/{tagId} Delete a link to a tag x 1)
GET /appstaks Get a list of appstaks x 1)
POST /appstaks Create an appstak x 1)
HEAD /appstaks Get header with count x 1)
PUT /appstaks/{appStakId}/tags Modify linked set of tags x 1)
DELETE /appstak-rules/{appStakRuleId} Delete an appstak rule x 1)
PATCH /appstak-rules/{appStakRuleId} Partially update an appstak rule x 1)
GET /appstak-rules/{appStakId} Get an appstak rule x 1)
GET /appstak-rules Get a list of appstak rules x 1)
POST /appstak-rules Create an appstak rule x 1)
HEAD /appstak-rules Get header with count x 1)
GET /appliances/{applianceId} Get a appliance x 1)
GET /appliances Get a list of appliances x 1)
HEAD /appliances Get header with count x 1)
DELETE /asset-groups/{assetGroupId}/activities/{activityId} Delete an activity
GET /asset-groups/{assetGroupId} Get an asset group x 1)
DELETE /asset-groups/{assetGroupId} Delete an asset group x 1)
PATCH /asset-groups/{assetGroupId} Partially update an asset group x 1)
PUT /asset-groups/{assetGroupId}/assets/{assetId} Create a link to an asset x 1)
DELETE /asset-groups/{assetGroupId}/assets/{assetId} Delete a link to an asset x 1)
PUT /asset-groups/{assetGroupId}/tags/{tagId} Create a link to a tag x 1)
DELETE /asset-groups/{assetGroupId}/tags/{tagId} Delete an existing link to a tag x 1)
GET /asset-groups/{assetGroupId}/comments/{commentId} Get a comment for an asset group x 1)
DELETE /asset-groups/{assetGroupId}/comments/{commentId} Delete a comment for an asset group x 1)
PATCH /asset-groups/{assetGroupId}/comments/{commentId} Partially update a comment for an asset group x 1)
GET /asset-groups/comments Get comments
POST /asset-groups/comments Add a comment to one or several asset groups x 1)
DELETE /asset-groups/comments Delete one or several comments for one or several asset groups x 1)
HEAD /asset-groups/comments Get header with count
GET /asset-groups/{assetGroupId}/activities Get activities x 1)
POST /asset-groups/{assetGroupId}/activities Add an activity for an AssetGroup
HEAD /asset-groups/{assetGroupId}/activities Get header with count x 1)
GET /asset-groups Get a list of asset groups x 1)
POST /asset-groups Create an asset group x 1)
HEAD /asset-groups Get header with count x 1)
GET /asset-groups/{assetGroupId}/comments Get the comments for an asset group x 1)
POST /asset-groups/{assetGroupId}/comments Add a comment for an asset group x 1)
GET /asset-groups/{assetGroupId}/subscriptions Get subscriptions associated with the given asset group x 1)
PUT /asset-groups/{assetGroupId}/tags Modify linked set of tags x 1)
GET /asset-identifiers/{assetIdentifierId} Get an asset identifier x 1)
DELETE /asset-identifiers/{assetIdentifierId} Delete an asset identifier x 1)
PATCH /asset-identifiers/{assetIdentifierId} Partially update an asset identifier x 1)
DELETE /asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId} Delete an asset identifier link x 1)
GET /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} Get the screenshot file for an asset identifier x 1)
PUT /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} Add screenshot to asset identifier x 1)
DELETE /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} Delete the screenshot file for an asset identifier x 1)
PUT /asset-identifiers/{assetIdentifierId}/tags/{tagId} Create a link to a tag x 1)
DELETE /asset-identifiers/{assetIdentifierId}/tags/{tagId} Delete a link to a tag x 1)
GET /asset-identifiers Get a list of asset identifiers x 1)
POST /asset-identifiers Create an asset identifier x 1)
HEAD /asset-identifiers Get header with count x 1)
GET /asset-identifiers/{assetIdentifierId}/screenshots Get the screenshot list for an asset identifier x 1)
GET /asset-identifiers/{assetIdentifierId}/links Get the links for an asset identifier x 1)
POST /asset-identifiers/{assetIdentifierId}/links Create an asset identifier link x 1)
GET /assets/{assetId} Get an asset x 1)
DELETE /assets/{assetId} Delete an asset x 1)
PATCH /assets/{assetId} Partially update an asset x 1)
DELETE /assets/{assetId}/links/{assetLinkId} Delete an asset link x 1)
PUT /assets/{assetId}/tags/{tagId} Create a link to a tag x 1)
DELETE /assets/{assetId}/tags/{tagId} Delete a link to a tag x 1)
PUT /assets/tags/{tagId} Create one or several links to one a tag x 1)
DELETE /assets/tags/{tagId} Delete one or several links to a tag x 1)
GET /assets Get a list of assets x 1)
POST /assets Create an asset x 1)
DELETE /assets Delete one or several assets x 1)
HEAD /assets Get header with count x 1)
PATCH /assets Partially update one or several assets x 1)
GET /assets/{assetId}/links Get the links for an asset x 1)
POST /assets/{assetId}/links Create an asset link x 1)
GET /assets/{assetId}/subscriptions Get subscriptions associated with the given asset x 1)
POST /assets/{assetId}/merge Merge two or more assets into a single asset x 1)
PUT /assets/{assetId}/tags Modify linked set of tags x 1)
PUT /assets/tags Modify linked set of tags to one or several assets x 1)
POST /assets/refresh-tags Refresh tags x 1)
POST /assets/{assetId}/split Split an asset based on identifier subset x 1)
GET /audits/{auditId} Get a audit by ID x 1)
GET /audits Get a list of audits x 1)
HEAD /audits Get header with count x 1)
GET /auth/login Get a token x 1)
POST /auth/login Log in with username and password x 1)
POST /auth/logout Log out x 1)
GET /blueprints/download/{key} Download a blueprint
POST /certificate/renew Renews certificate x 1)
GET /checks/{checkId}/comments/{commentId} Get a comment for a check x 1)
DELETE /checks/{checkId}/comments/{commentId} Delete a comment for a check x 1)
GET /checks/{checkId} Get a check x 1)
GET /checks Get a list of checks x 1)
HEAD /checks Get header with count x 1)
GET /checks/{checkId}/comments Get the comments for a check x 1)
POST /checks/{checkId}/comments Add a comment for a check x 1)
GET /checks/{checkId}/exploits Get the exploits for a check x 1)
GET /classifications/{classificationId} Get a classification
GET /classifications Get a list of classifications
HEAD /classifications Get header with count
PUT /compliance/findings/{findingId}/tags/{tagId} Create a link to a tag x 1)
DELETE /compliance/findings/{findingId}/tags/{tagId} Delete a link to a tag x 1)
GET /compliance/findings/{findingId} Get a compliance finding by ID x 1)
GET /compliance/findings Get a list of compliance findings x 1)
HEAD /compliance/findings Get header with count x 1)
GET /compliance/policies/{policyId} Get a compliance policy x 1)
GET /compliance/policies Get a list of compliance policies x 1)
HEAD /compliance/policies Get header with count x 1)
GET /compliance/requirements/{requirementId} Get a compliance requirement x 1)
GET /compliance/requirements Get a list of requirements x 1)
HEAD /compliance/requirements Get header with count x 1)
POST /compliance/findings/{findingId}/mark-exception Mark compliance finding as exception x 1)
POST /compliance/findings/{findingId}/mark-false-positive Mark compliance finding as false positive x 1)
PUT /compliance/findings/{findingId}/tags Modify linked set of tags x 1)
POST /compliance/reports Generate a compliance report x 1)
POST /compliance/findings/{findingId}/unmark-exception Unmark finding as exception x 1)
POST /compliance/findings/{findingId}/unmark-false-positive Unmark finding as false positive x 1)
GET /consumption-stats/{consumptionStatsId} Get consumption stats by ID
GET /consumption-stats Get a list of consumption stats
HEAD /consumption-stats Get header with count
GET /consumption-stats/{consumptionStatsId}/subscriptions Get a list of subscriptions for consumption stats
GET /credential-classes/{credentialClassId} Get a credential class x 1)
GET /credential-classes Get a list of credential classes x 1)
HEAD /credential-classes Get header with count x 1)
GET /credentials/{credentialId} Get a credential x 1)
DELETE /credentials/{credentialId} Delete a credential x 1)
PATCH /credentials/{credentialId} Partially update a credential x 1)
POST /credentials Create a credential x 1)
PUT /customers/{customerId}/tags/{tagId} Create a link to a tag
DELETE /customers/{customerId}/tags/{tagId} Delete a link to a tag
GET /customers/{customerId}/consultancy Get consultancy token
GET /customers/me/consumption-stats/{consumptionStatsId} Get consumption stats by ID for current customer x 1)
GET /customers/me/consumption-stats Get consumption stats for current customer x 1)
GET /customers/{customerId}/consumption-stats Get consumption stats for a customer
GET /customers/me/consumption-stats/{consumptionStatsId}/subscriptions Get a list of subscriptions for consumption stats for current customer x 1)
GET /customers/me Get current customer x 1)
GET /customers/{customerId} Get a customer
PATCH /customers/{customerId} Partially update a customer
GET /customers Get a list of customers
HEAD /customers Get header with count
GET /customers/{customerId}/usage-stats Get usage stats for a customer
PUT /customers/{customerId}/tags Modify linked set of tags
GET /dashboards/{dashboardId} Get a dashboard x 1)
DELETE /dashboards/{dashboardId} Delete a dashboard x 1)
PATCH /dashboards/{dashboardId} Partially update a dashboard x 1)
PUT /dashboards/{dashboardId}/tags/{tagId} Create a link to a tag x 1)
DELETE /dashboards/{dashboardId}/tags/{tagId} Delete a link to a tag x 1)
GET /dashboards Get a list of dashboards x 1)
POST /dashboards Create a dashboard x 1)
HEAD /dashboards Get header with count x 1)
PUT /dashboards/{dashboardId}/tags Modify linked set of tags x 1)
POST /decrypt/file Request the decryption of an uploaded file
POST /decrypt/object Request the decryption of a file from object storage
GET /downloads/{key} Get a download cache entry and generate a token for downloading the file, expires after 5 minutes x 1)
DELETE /downloads/{key} Delete a download cache entry, and potentially associated data x 1)
GET /downloads/download/{token} Download a file x 1)
GET /downloads Get a list of download cache entries x 1)
HEAD /downloads Get header with count x 1)
GET /downloads/{token} Compatibility endpoint for file download (Deprecated: 2021-03-04) x 1)
POST /enroll/db-settings Configure database settings x 1)
DELETE /enroll/db-settings Delete database settings x 1)
POST /enroll/services Enroll services x 1)
GET /events/subscriptions/{subscriptionId} Get an event subscription x 1)
DELETE /events/subscriptions/{subscriptionId} Delete an event subscription x 1)
PATCH /events/subscriptions/{subscriptionId} Partially update an event subscription x 1)
PUT /events/subscriptions/{subscriptionId}/tags/{tagId} Create a link to a tag x 1)
DELETE /events/subscriptions/{subscriptionId}/tags/{tagId} Delete a link to a tag x 1)
GET /events/subscriptions Get a list of event subscriptions x 1)
POST /events/subscriptions Create event subscription x 1)
HEAD /events/subscriptions Get header with count x 1)
GET /events/subscriptions/template-variables/{trigger} Get jinja variables relevant to an event x 1)
PUT /events/subscriptions/{subscriptionId}/tags Modify linked set of tags x 1)
GET /exploits/{exploitId} Get an exploit x 1)
GET /exploits Get a list of exploits x 1)
HEAD /exploits Get header with count x 1)
GET /finding-template-groups/{findingTemplateGroupId} Get a finding template group
DELETE /finding-template-groups/{findingTemplateGroupId} Delete a finding template group
GET /finding-template-groups Get a list of finding template groups
POST /finding-template-groups Create a finding template group
HEAD /finding-template-groups Get header with count
PATCH /finding-template-groups/{findingTemplateId} Update a finding template
GET /finding-templates/{findingTemplateId} Get a finding template
DELETE /finding-templates/{findingTemplateId} Delete a finding template
PATCH /finding-templates/{findingTemplateId} Update a finding template
PUT /finding-templates/{findingTemplateId}/tags/{tagId} Create a link to a tag
DELETE /finding-templates/{findingTemplateId}/tags/{tagId} Delete a link to a tag
GET /finding-templates Get a list of finding templates
POST /finding-templates Create a finding template
HEAD /finding-templates Get header with count
PUT /finding-templates/{findingTemplateId}/tags Modify linked set of tags
GET /findings/{findingId}/attachments/{attachmentId} Get an attachment for a finding x 1)
DELETE /findings/{findingId}/attachments/{attachmentId} Delete an attachment for a finding
GET /findings/{findingId}/comments/{commentId} Get a comment for a finding x 1)
DELETE /findings/{findingId}/comments/{commentId} Delete a comment for a finding x 1)
PATCH /findings/{findingId}/comments/{commentId} Partially update a comment for a finding x 1)
GET /findings/comments Get comments
POST /findings/comments Add a comment to one or several findings x 1)
DELETE /findings/comments Delete one or several comments for one or several findings x 1)
HEAD /findings/comments Get header with count
GET /findings/{findingId} Get a finding by ID x 1)
DELETE /findings/{findingId} Delete a finding
PATCH /findings/{findingId} Partially update a finding x 1)
PUT /findings/{findingId}/tags/{tagId} Create a link to a tag x 1)
DELETE /findings/{findingId}/tags/{tagId} Delete a link to a tag x 1)
PUT /findings/tags/{tagId} Create links to a tag x 1)
DELETE /findings/tags/{tagId} Delete links to a tag x 1)
GET /findings Get a list of findings x 1)
POST /findings Create a finding
DELETE /findings Delete one or several findings
HEAD /findings Get header with count x 1)
PATCH /findings Partially update one or several findings x 1)
PUT /findings/{findingId}/matches/{matchId} Create a link to a match
DELETE /findings/{findingId}/matches/{matchId} Delete a link to a match
GET /findings/{findingId}/attachments/{attachmentId}/download Get the token for downloading an attachment for a finding x 1)
POST /findings/{findingId}/send Send finding as email x 1)
GET /findings/{findingId}/attachments Get the attachments for a finding x 1)
POST /findings/{findingId}/attachments Add an attachment for a finding
GET /findings/{findingId}/comments Get the comments for a finding x 1)
POST /findings/{findingId}/comments Add a comment for a finding x 1)
GET /findings/{findingId}/exploits Get the exploits for a finding x 1)
GET /findings/delta Get a list of deltas x 1)
GET /findings/delta-summary Get a delta summary x 1)
GET /findings/solutions Get a list of solutions x 1)
POST /findings/{findingId}/secure-code-warrior Log the request to Secure Code Warrior x 1)
POST /findings/{findingId}/mark-false-positive Mark finding as false positive x 1)
POST /findings/mark-false-positive Mark one or several finding(s) as false positives x 1)
POST /findings/{findingId}/mark-fixed Mark finding as fixed x 1)
POST /findings/mark-fixed Mark one or several findings as fixed x 1)
POST /findings/{findingId}/mark-irreproducible Mark finding as irreproducible x 1)
POST /findings/mark-irreproducible Mark one or several findings as irreproducible x 1)
PUT /findings/{findingId}/tags Modify linked set of tags x 1)
PUT /findings/tags Modify linked set of tags to one or several findings x 1)
POST /findings/{findingId}/publish Publish finding (set as present)
POST /findings/{findingId}/reject Set finding as rejected
POST /findings/{findingId}/request-clarification Request clarification for a finding x 1)
POST /findings/{findingId}/request-verification Mark finding as pending verification x 1)
POST /findings/request-verification Mark one or several findings as pending for verification x 1)
POST /findings/{findingId}/reset-status Reset status of finding to 'PRESENT' x 1)
POST /findings/reset-status Reset status on one or several findings to 'PRESENT x 1)
POST /findings/{findingId}/accept Accept finding x 1)
POST /findings/accept Accept one or several findings x 1)
POST /findings/{findingId}/quality-assure Set finding as quality assured
POST /findings/{findingId}/review Set finding as reviewed and transition to be verified
POST /findings/{findingId}/verify Set finding as verified and transitioned to be quality assured
POST /findings/{findingId}/unwatch Unwatch a finding x 1)
POST /findings/unwatch Unwatch one or several findings x 1)
POST /findings/{findingId}/watch Watch a finding x 1)
POST /findings/watch Watch one or several findings x 1)
GET /globals Get global settings x 1)
GET /globals/timezones Get a list of timezones x 1)
GET /integrations/authorization Authorization x 1)
GET /integrations/{integrationId}/authorize Authorize an integration based on OAuth 2.0 x 1)
GET /integrations/{integrationId} Get an integration x 1)
DELETE /integrations/{integrationId} Delete an integration x 1)
PATCH /integrations/{integrationId} Partially update an integration x 1)
PUT /integrations/{integrationId}/tags/{tagId} Create a link to a tag x 1)
DELETE /integrations/{integrationId}/tags/{tagId} Delete a link to a tag x 1)
GET /integrations Get a list of integrations x 1)
POST /integrations Create an integration x 1)
HEAD /integrations Get header with count x 1)
PUT /integrations/{integrationId}/tags Modify linked set of tags x 1)
POST /integrations/verify Verify the integration connectivity x 1)
POST /integrations/{integrationId}/verify Verify the integration connectivity x 1)
GET /managed-report-groups/{managedReportGroupId} Get a managed report group (Deprecated: 2019-12-11) x 1)
GET /managed-report-groups Get a list of managed report groups (Deprecated: 2019-12-11) x 1)
HEAD /managed-report-groups Get header with count (Deprecated: 2019-12-11) x 1)
GET /managed-reports/{managedReportId} Get a managed report x 1)
DELETE /managed-reports/{managedReportId} Delete a managed report x 1)
PATCH /managed-reports/{managedReportId} Partially update a managed report x 1)
PUT /managed-reports/{managedReportId}/tags/{tagId} Create a link to a tag x 1)
DELETE /managed-reports/{managedReportId}/tags/{tagId} Delete a link to a tag x 1)
GET /managed-reports/{managedReportId}/download Get the token for downloading a managed report x 1)
GET /managed-reports Get a list of managed reports x 1)
POST /managed-reports Create a managed report x 1)
HEAD /managed-reports Get header with count x 1)
GET /managed-reports/tags Get a list of tags for managed reports x 1)
PUT /managed-reports/{managedReportId}/tags Modify linked set of tags x 1)
POST /managed-reports/upload Upload a managed report from HIAB x 1)
GET /matches/{matchId} Get a match x 1)
DELETE /matches/{matchId} Delete a match
PATCH /matches/{matchId} Partially update a match
GET /matches Get a list of matches x 1)
POST /matches Create a match
HEAD /matches Get header with count x 1)
GET /notifications/{notificationId} Get a notification x 1)
GET /notifications Get a list of notifications x 1)
HEAD /notifications Get header with count x 1)
POST /notifications/{notificationId}/mark-as-read Mark a notification as read x 1)
POST /notifications/{notificationId}/mark-as-unread Mark a notification as unread x 1)
GET /organizations/{organizationId} Get an organization
GET /organizations Get a list of organizations
HEAD /organizations Get header with count
GET /outscan/findings/{findingId}/exploits Get the exploits for a finding x 1)
GET /outscan/findings/{findingId} Get a finding by ID x 1)
GET /outscan/findings Get a list of findings x 1)
HEAD /outscan/findings Get header with count x 1)
GET /outscan/scan-logs/{scanLogId}/findings Get a list of findings for a scan x 1)
GET /outscan/scan-logs/{scanLogId} Get a scan log x 1)
GET /outscan/scan-logs Get a list of scan logs x 1)
HEAD /outscan/scan-logs Get header with count x 1)
GET /outscan/scans/{scanId} Get a scan x 1)
GET /outscan/scans Get a list of scans x 1)
HEAD /outscan/scans Get header with count x 1)
POST /outscan/scans/{scanId}/stop Stop a scan x 1)
GET /outscan/schedules/{scheduleId} Get a schedule x 1)
DELETE /outscan/schedules/{scheduleId} Delete a schedule x 1)
PATCH /outscan/schedules/{scheduleId} Partially update a schedule x 1)
GET /outscan/schedules Get a list of schedules x 1)
POST /outscan/schedules Create a schedule x 1)
HEAD /outscan/schedules Get header with count x 1)
POST /outscan/schedules/{scheduleId}/scan Start scanning now x 1)
GET /outscan/targets/{targetId} Get a target x 1)
DELETE /outscan/targets/{targetId} Delete a target x 1)
GET /outscan/targets Get a list of targets x 1)
POST /outscan/targets Create new targets x 1)
HEAD /outscan/targets Get header with count x 1)
POST /password-recovery Request password recovery email for username x 1)
GET /product-information Get a list of products x 1)
HEAD /product-information Get header with count x 1)
GET /release-notes/notification-trigger Get last release notes notification trigger timestamp
POST /release-notes/trigger-notification Trigger release notes notification and set trigger timestamp
GET /report-schedules/{reportScheduleId} Get a report schedule (Deprecated: 2019-12-11) x 1)
DELETE /report-schedules/{reportScheduleId} Delete a report schedule (Deprecated: 2019-12-11) x 1)
PATCH /report-schedules/{reportScheduleId} Partially update a report schedule (Deprecated: 2019-12-11) x 1)
GET /report-schedules Get a list of report schedules (Deprecated: 2019-12-11) x 1)
POST /report-schedules Create a new report schedule (Deprecated: 2019-12-11) x 1)
HEAD /report-schedules Get header with count (Deprecated: 2019-12-11) x 1)
POST /report-schedules/{reportScheduleId}/send Start scanning now (Deprecated: 2019-12-11) x 1)
GET /reports/{key} Get a report cache entry and generate a token for downloading the report, expires after 5 minutes (Deprecated: 2021-02-25) x 1)
DELETE /reports/{key} Delete a report (Deprecated: 2021-02-25) x 1)
GET /reports Get a list of report cache entries (Deprecated: 2021-02-25) x 1)
POST /reports Generate a report x 1)
HEAD /reports Get header with count (Deprecated: 2021-02-25) x 1)
GET /resource-groups/{resourceGroupId} Get a resource group x 1)
DELETE /resource-groups/{resourceGroupId} Delete a resource group x 1)
PATCH /resource-groups/{resourceGroupId} Partially update a resource group x 1)
GET /resource-groups Get a list of resource groups x 1)
POST /resource-groups Create a resource group x 1)
HEAD /resource-groups Get header with count x 1)
POST /rule-engine Run rule engine
GET /scan-configuration-groups/{scanConfigurationGroupId} Get scan configuration group x 1)
DELETE /scan-configuration-groups/{scanConfigurationGroupId} Delete scan configuration group x 1)
PATCH /scan-configuration-groups/{scanConfigurationGroupId} Partially update a scan configuration group x 1)
GET /scan-configuration-groups Get a list of scan configuration groups x 1)
POST /scan-configuration-groups Create a scan configuration group x 1)
HEAD /scan-configuration-groups Get header with count x 1)
PUT /scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId} Create a link to an asset identifier x 1)
DELETE /scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId} Delete a link to an asset identifier x 1)
PUT /scan-configurations/{scanConfigurationId}/assets/{assetId} Create a link to an asset x 1)
DELETE /scan-configurations/{scanConfigurationId}/assets/{assetId} Delete a link to an asset x 1)
GET /scan-configurations/{scanConfigurationId} Get a scan configuration x 1)
DELETE /scan-configurations/{scanConfigurationId} Delete a scan configuration x 1)
PATCH /scan-configurations/{scanConfigurationId} Partially update a scan configuration x 1)
PUT /scan-configurations/{scanConfigurationId}/schedules/{scheduleId} Create a link to a schedule x 1)
DELETE /scan-configurations/{scanConfigurationId}/schedules/{scheduleId} Delete a link to a schedule x 1)
PUT /scan-configurations/{scanConfigurationId}/tags/{tagId} Create a link to a tag x 1)
DELETE /scan-configurations/{scanConfigurationId}/tags/{tagId} Delete a link to a tag x 1)
PUT /scan-configurations/tags/{tagId} Create a tag link to one or several scan configurations x 1)
DELETE /scan-configurations/tags/{tagId} Delete a tag link to one or several scan configurations x 1)
GET /scan-configurations Get a list of scan configurations x 1)
POST /scan-configurations Create a scan configuration x 1)
DELETE /scan-configurations Delete one or several scan configurations x 1)
HEAD /scan-configurations Get header with count x 1)
PATCH /scan-configurations Partially update one or several scan configurations x 1)
PUT /scan-configurations/{scanConfigurationId}/tags Modify linked set of tags x 1)
PUT /scan-configurations/tags Modify linked set of tags to several scan configurations x 1)
POST /scan-configurations/{scanConfigurationId}/scan Start a scan based on this configuration x 1)
POST /scan-configurations/test-setup-script Test a setup LUA script x 1)
POST /scan-configurations/{scanConfigurationId}/test-setup-script Test an application setup LUA script x 1)
GET /scan-policies/{scanPolicyId} Get a scan policy x 1)
DELETE /scan-policies/{scanPolicyId} Delete a scan policy x 1)
PATCH /scan-policies/{scanPolicyId} Partially update an scan policy x 1)
PUT /scan-policies/{scanPolicyId}/accounts/{accountId} Create a link to an account x 1)
DELETE /scan-policies/{scanPolicyId}/accounts/{accountId} Delete a link to an account x 1)
PUT /scan-policies/{scanPolicyId}/tags/{tagId} Create a link to a tag x 1)
DELETE /scan-policies/{scanPolicyId}/tags/{tagId} Delete a link to a tag x 1)
GET /scan-policies/default-settings Get default scan policy settings x 1)
GET /scan-policies Get a list of scan policies x 1)
POST /scan-policies Create a scan policy x 1)
HEAD /scan-policies Get header with count x 1)
PUT /scan-policies/{scanPolicyId}/tags Modify linked set of tags x 1)
PUT /scan-policies/{scanPolicyId}/accounts Modify linked set of account IDs x 1)
GET /scanners/{scannerId} Get a scanner x 1)
GET /scanners Get a list of scanners x 1)
HEAD /scanners Get header with count x 1)
GET /scans/{scanId}/crawled-urls Get the crawled URLs for a scan x 1)
GET /scans/{scanId}/discovery Get the discovery results for a scan x 1)
GET /scans/{scanId}/issues Get the issues for a scan x 1)
GET /scans/{scanId}/log Get the log for a scan x 1)
GET /scans/{scanId} Get a scan x 1)
GET /scans Get a list of scans x 1)
POST /scans Create a scan x
HEAD /scans Get header with count x 1)
GET /scans/{scanId}/metadata Get metadata for a scan
POST /scans/{scanId}/blueprints Request a blueprint x 1)
POST /scans/{scanId}/stop Stop a scan x 1)
GET /scheduled-reports/{scheduledReportId} Get a scheduled report x 1)
DELETE /scheduled-reports/{scheduledReportId} Delete a scheduled report x 1)
PATCH /scheduled-reports/{scheduledReportId} Partially update a scheduled report x 1)
PUT /scheduled-reports/{scheduledReportId}/schedules/{scheduleId} Create a link to a schedule x 1)
DELETE /scheduled-reports/{scheduledReportId}/schedules/{scheduleId} Delete a link to a schedule x 1)
PUT /scheduled-reports/{scheduledReportId}/tags/{tagId} Create a link to a tag x 1)
DELETE /scheduled-reports/{scheduledReportId}/tags/{tagId} Delete a link to a tag x 1)
GET /scheduled-reports Get a list of scheduled reports x 1)
POST /scheduled-reports Create a scheduled report x 1)
HEAD /scheduled-reports Get header with count x 1)
PUT /scheduled-reports/{scheduledReportId}/tags Modify linked set of tags x 1)
POST /scheduled-reports/{scheduledReportId}/send Send report x 1)
GET /schedules/{scheduleId} Get a schedule x 1)
DELETE /schedules/{scheduleId} Delete a schedule x 1)
PATCH /schedules/{scheduleId} Partially update a schedule x 1)
GET /schedules Get a list of schedules x 1)
POST /schedules Create a schedule x 1)
HEAD /schedules Get header with count x 1)
POST /scoping Submit scoping information. x 1)
POST /sub-users/me/change-password Change current sub-users password; if current user isn't a sub-user, redirect to /users/me/change-password x 1)
GET /sub-users/{subUserId} Get a sub-user x 1)
DELETE /sub-users/{subUserId} Delete a sub-user x 1)
PATCH /sub-users/{subUserId} Partially update a sub-user x 1)
PUT /sub-users/{subUserId}/tags/{tagId} Create a link to a tag x 1)
DELETE /sub-users/{subUserId}/tags/{tagId} Delete a link to a tag x 1)
GET /sub-users/me Get current sub-user; if current user isn't a sub-user, redirect to /users/me x 1)
PATCH /sub-users/me Partially update current sub-user; if current user isn't a sub-user, redirect to /users/me x 1)
GET /sub-users Get a list of sub-users x 1)
POST /sub-users Create a new sub-user x 1)
HEAD /sub-users Get header with count x 1)
PUT /sub-users/{subUserId}/tags Modify linked set of tags x 1)
GET /subscription-audits/{auditId} Get a subscription audit x
GET /subscription-audits Get a list of subscription audits x
HEAD /subscription-audits Get header with count x
GET /subscriptions/{subscriptionUuid} Get a subscription x 1)
DELETE /subscriptions/{subscriptionUuid} Delete a subscription
PATCH /subscriptions/{subscriptionUuid} Partially update a subscription
GET /subscriptions/templates/{subscriptionTemplateUuid} Get a subscription template
DELETE /subscriptions/templates/{subscriptionTemplateUuid} Delete a subscription template
PATCH /subscriptions/templates/{subscriptionTemplateUuid} Partially update a subscription template
GET /subscriptions/{subscriptionId}/asset-groups Get asset groups associated with the subscription x 1)
GET /subscriptions Get a list of subscriptions x 1)
POST /subscriptions Create a subscription
HEAD /subscriptions Get header with count x 1)
GET /subscriptions/templates Get a list of subscription templates
POST /subscriptions/templates Create a subscription template
HEAD /subscriptions/templates Get header with count
GET /subscriptions/templates/{subscriptionTemplateUuid}/template-variables Get variables for subscription templates
GET /subscriptions/template-variables Get variables for subscription templates
POST /subscriptions/templates/preview Preview a subscription template
POST /subscriptions/reports Generate a report
GET /summaries/{summaryId} Get a summary
DELETE /summaries/{summaryId} Delete a summary
PATCH /summaries/{summaryId} Partially update a summary
GET /summaries Get a list of summaries
POST /summaries Create a summary
HEAD /summaries Get header with count
POST /summaries/{summaryId}/transition Transition a summary status
GET /swat-schedules/{scheduleId} Get a SWAT schedule (Deprecated: 2023-01-24) x 1)
GET /swat-schedules Get a list of SWAT schedules (Deprecated: 2023-01-24) x 1)
HEAD /swat-schedules Get header with count (Deprecated: 2023-01-24) x 1)
GET /tags/{tagId} Get a tag by ID x 1)
DELETE /tags/{tagId} Delete a tag x 1)
PATCH /tags/{tagId} Partially update a tag x 1)
GET /tags Get a list of tags x 1)
POST /tags Create a tag x 1)
HEAD /tags Get header with count x 1)
GET /tags/statistics/{statisticId} Get tag statistics by ID x 1)
GET /tags/statistics Get a list of tag statistics x 1)
HEAD /tags/statistics Get header with count x 1)
POST /tags/transform Transform tags x 1)
POST /terms/{termsId}/accept Accept terms x 1)
GET /terms/{termsId} Get terms x 1)
DELETE /terms/{termsId} Delete terms
GET /terms/acceptances Get a list of terms acceptances x 1)
GET /terms Get a list of terms x 1)
POST /terms Create terms
HEAD /terms Get header with count x 1)
GET /terms-templates/{termsTemplateId} Get a terms template
DELETE /terms-templates/{termsTemplateId} Delete a terms template
GET /terms-templates Get a list of terms templates
POST /terms-templates Create a terms template
HEAD /terms-templates Get header with count
GET /usage-stats/cyr3con Get cyr3con stats
GET /usage-stats/{usageStatsId} Get usage stats by ID
GET /usage-stats Get a list of usage stats
HEAD /usage-stats Get header with count
GET /user-events/{userEventId} Get a user event by ID x 1)
DELETE /user-events/{userEventId} Delete a user event x 1)
PATCH /user-events/{userEventId} Partially update a user event x 1)
GET /user-events/simplified Get a simplified list of user events x 1)
PATCH /user-events/simplified Partially update user events via simplified data x 1)
GET /user-events Get a list of user events x 1)
POST /user-events Create a user event x 1)
HEAD /user-events Get header with count x 1)
GET /user-role-permissions/{userRolePermissionId} Get a user role permission x 1)
GET /user-role-permissions Get a list of user role permissions x 1)
HEAD /user-role-permissions Get header with count x 1)
GET /user-roles/{userRoleId} Get a user role x 1)
DELETE /user-roles/{userRoleId} Delete a user role x 1)
PATCH /user-roles/{userRoleId} Partially update a user role x 1)
GET /user-roles Get a list of user roles x 1)
POST /user-roles Create a user role x 1)
HEAD /user-roles Get header with count x 1)
POST /users/me/change-password Change current users password; if current user is a sub-user, redirect to /sub-users/me/change-password
PUT /users/{userId}/tags/{tagId} Create a link to a tag
DELETE /users/{userId}/tags/{tagId} Delete a link to a tag
GET /users/me Get current user; if current user is a sub-user, redirect to /sub-users/me x 1)
PATCH /users/me Partially update current user; if current user is a sub-user, redirect to /sub-users/me x 1)
GET /users/{userId} Get a user
PATCH /users/{userId} Partially update a user
GET /users Get a list of users
HEAD /users Get header with count
PUT /users/{userId}/tags Modify linked set of tags
GET /view-template-groups/{viewTemplateGroupId} Get view template group x 1)
DELETE /view-template-groups/{viewTemplateGroupId} Delete view template group x 1)
PATCH /view-template-groups/{viewTemplateGroupId} Partially update a view template group x 1)
GET /view-template-groups Get a list of view template groups x 1)
POST /view-template-groups Create a view template group x 1)
HEAD /view-template-groups Get header with count x 1)
GET /view-templates Get a list of view templates x 1)
POST /view-templates Create a view template x 1)
HEAD /view-templates Get header with count x 1)
GET /view-templates/{viewTemplateId} Get view template by ID x 1)
DELETE /view-templates/{viewTemplateId} Delete a view template x 1)
PATCH /view-templates/{viewTemplateId} Partially update a view template x 1)
PUT /view-templates/{viewTemplateId}/tags/{tagId} Create a link to a tag x 1)
DELETE /view-templates/{viewTemplateId}/tags/{tagId} Delete a link to a tag x 1)
PUT /view-templates/{viewTemplateId}/tags Modify linked set of tags x 1)
POST /webfindings/{findingId}/unaccept Unaccept finding (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/comments/{commentId} Get a comment for a finding (Deprecated: 2019-05-21) x 1)
DELETE /webfindings/{findingId}/comments/{commentId} Delete a comment for a finding (Deprecated: 2019-05-21) x 1)
PATCH /webfindings/{findingId}/comments/{commentId} Update a comment for a finding (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/comments Get a list of comments for a finding (Deprecated: 2019-05-21) x 1)
POST /webfindings/{findingId}/comments Submit a comment for a finding (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/files/{fileId}/download Download a file attached to a finding using a token (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/files Get the files attached to a finding (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/files/{fileId} Get the token for downloading a file attached to a finding (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId} Get a finding by ID (Deprecated: 2019-05-21) x 1)
PATCH /webfindings/{findingId} Partially update a finding (Deprecated: 2019-05-21) x 1)
GET /webfindings Get a list of findings (Deprecated: 2019-05-21) x 1)
HEAD /webfindings Get header with count (Deprecated: 2019-05-21) x 1)
GET /webfindings/{findingId}/web-information Get gathered information for a web finding (Deprecated: 2019-05-21) x 1)
POST /webfindings/{findingId}/mark-false-positive Mark finding as false positive (Deprecated: 2019-05-21) x 1)
POST /webfindings/{findingId}/accept Accept finding (Deprecated: 2019-05-21) x 1)
POST /webfindings/{findingId}/unmark-false-positive Unmark finding as false positive (Deprecated: 2019-05-21) x 1)
GET /webreports/{key} Get a report cache entry and generate a token for downloading the report, expires after 5 minutes (Deprecated: 2019-05-21) x 1)
DELETE /webreports/{key} Delete a report (Deprecated: 2019-05-21) x 1)
GET /webreports/{key}/download Download a report (Deprecated: 2019-05-21) x 1)
GET /webreports Get a list of report cache entries (Deprecated: 2019-05-21) x 1)
POST /webreports Generate a report (Deprecated: 2019-05-21) x 1)
HEAD /webreports Get header with count (Deprecated: 2019-05-21) x 1)
GET /workflows/{workflowId} Get a workflow x 1)
DELETE /workflows/{workflowId} Delete a workflow x 1)
PATCH /workflows/{workflowId} Partially update a workflow x 1)
PUT /workflows/{workflowId}/schedules/{scheduleId} Create a link to a schedule x 1)
DELETE /workflows/{workflowId}/schedules/{scheduleId} Delete a link to a schedule x 1)
PUT /workflows/{workflowId}/tags/{tagId} Create a link to a tag x 1)
DELETE /workflows/{workflowId}/tags/{tagId} Delete a link to a tag x 1)
GET /workflows Get a list of workflows x 1)
POST /workflows Create a workflow x 1)
HEAD /workflows Get header with count x 1)
PUT /workflows/{workflowId}/tags Modify linked set of tags x 1)
POST /workflows/{workflowId}/scan Start scans based on this workflow x 1)

1) Can operate on own entries only.#Example flows

Run an Appsec scan

1. Authenticate

All API requests in the code examples to the right require a valid JWT token. To learn how to create a token, see Authentication.

# Create an Appsec scan configuration
curl -X POST \
https://outscan.outpost24.com/opi/rest/scan-configurations?return-result=true \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'
  --data-binary '{"name":"my_config","template":"SCALE","configuration":{"fuzzing":true,"sequential":false,"nseconds":7200,"seeds":["https://example.outpost24.com/"],"template":"SCALE"}}'

  {
   "id" : 289,
   "customerId" : 40,
   "created" : "2019-06-02T13:32:16.760371Z",
   "updated" : "2019-06-02T13:32:16.760371Z",
   "createdBy" : "Anna Anderson",
   "updatedBy" : "Anna Anderson",
   "createdById" : 1015,
   "updatedById" : 1015,
   "name" : "my_config",
   "template" : "SCALE",
   "scheduleIds" : [ ],
   "assetIdentifierIds" : [ 1635 ],
   "configuration" : {
      "template" : "SCALE",
      "nseconds" : 7200,
      "fuzzing" : true,
      "sequential" : false,
      "seeds" : [ "https://example.outpost24.com/" ]
   }
  }

2. Create an Appsec scan configuration

# Submit a request to scan the asset with the created config (ID: 289)

curl -X POST \
https://outscan.outpost24.com/opi/rest/scan-configurations/289/scan \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'






















3. Trigger a scan

# Retrieve asset identifier associated with the config (ID: 1635)
curl -X GET \
https://outscan.outpost24.com/opi/rest/asset-identifiers/1635 \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'

  {
   "id" : 1635,
   "customerId" : 40,
   "created" : "2018-10-23T07:31:27.131194Z",
   "updated" : "2019-06-02T13:53:02.250922Z",
   "createdBy" : "Anna Anderson",
   "updatedBy" : "System",
   "createdById" : 1015,
   "updatedById" : 0,
   "name" : "example.outpost24.com",
   "type" : "Hostname",
   "firstSeen" : "2018-10-23T07:31:27.131Z",
   "lastSeen" : "2019-06-02T13:53:02.260Z",
   "scannerId" : 0,
   "source" : [ "APPSEC" ],
   "links" : [ 269 ]
  }

# Retrieve IPs associated with this hostname
curl -X GET \
https://outscan.outpost24.com/opi/rest/asset-identifiers/269 \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'

  {
   "id" : 269,
   "customerId" : 40,
   "created" : "2018-10-23T07:31:27.131194Z",
   "updated" : "2019-06-02T13:53:02.250922Z",
   "createdBy" : "System",
   "updatedBy" : "System",
   "createdById" : 0,
   "updatedById" : 0,
   "name" : "12.34.56.78",
   "type" : "IP",
   "firstSeen" : "2018-10-23T07:31:27.131Z",
   "lastSeen" : "2019-06-02T13:53:02.260Z",
   "scannerId" : 0,
   "source" : [ "APPSEC" ],
   "links" : [ 269 ]
  }




4. Retrieve scanned asset identifiers

# Retrieve findings for the IP

curl -X GET \
https://outscan.outpost24.com/opi/rest/findings?filter=%5B%7B%22field%22%3A%22assetIdentifierId%22%2C%22value%22%3A269%2C%22comparison%22%3A%22eq%22%7D%5D \
  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc...'

  {
   "id" : 2181,
   "customerId" : 40,
   "created" : "2019-06-02T13:53:02.260Z",
   "updated" : "2019-06-02T13:53:02.260Z",
   "createdBy" : "System",
   "updatedBy" : "System",
   "createdById" : 0,
   "updatedById" : 0,
   "checkId" : 289960,
   "cvssV2Score" : 5.0,
   "cvssV2BaseScore" : 5.0,
   "cvssV2Vector" : "(AV:N/AC:L/Au:N/C:P/I:N/A:N)",
   "cvssV2Severity" : "MEDIUM",
   "commentsCount" : 0,
   "name" : "X-Frame-Options Header Missing or Malformed",
   "description" : "The clickjacking attack vector consists of an attacker creating a malicious web page that includes a section of the application within an <iframe>-element. The attacker cannot directly interact with the application, but they can control the main page and are able to overlay elements on top of the <iframe>. This can be leveraged in order to fool the end user that they are interacting with one page, when they are in reality interacting with another page.\n\nThe frameableness of a resource is determined by either the Content-Security-Policy header when used with the frame-ancestors directive, or using the X-Frame-Options header. \nBoth of these were missing or malformed on the found resource.",
   "cwe" : "CWE-1021",
   "solution" : "The Content-Security-Policy header with the frame-ancestors directive will resolve clickjacking in modern browsers that support it. Setting the frame-ancestors to 'self' (SAMEORIGIN) or 'none' (DENY) will limit which origins may frame this resource. Whitelisting external resources is possible using this method as well.\n\nTo ensure legacy client compatibility, set the X-Frame-Options header to either DENY (which means the resource can not be framed) or SAMEORIGIN (which means that only the same origin may frame this resource). Note that the 'allow-from' value is not implemented correctly in all browsers. If frameability in an external resource has to be permitted, use CSP.\n\nThese headers must be set on all server responses.",
   "exploitAvailable" : false,
   "matchIds" : [ 2203 ],
   "firstSeen" : "2019-06-02T13:53:02.260Z",
   "lastSeen" : "2019-06-02T13:53:02.260Z",
   "owasp2013" : [ 5 ],
   "owasp2017" : [ 6 ],
   "assetIdentifierId" : 269,
   "assetIdentifierType" : "IP",
   "assetIdentifierName" : "12.34.56.78"
  },
...




































5. Retrieve findings for the IP

Errors

The API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- You don't have permission to perform this operation.
404 Not Found -- The specified resource could not be found.
405 Method Not Allowed -- You tried to access an object with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

Security

Accounts

Get an account

# You can also use wget
curl -X GET \
/opi/rest/accounts/{accountId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/accounts/{accountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/accounts/{accountId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/accounts/{accountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /accounts/{accountId}

Parameters

Name In Type Required Description
accountId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string",
      "tags": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "key": "string",
          "value": "string",
          "inherited": true,
          "count": 0
        }
      ]
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Account

Delete an account

# You can also use wget
curl -X DELETE \
/opi/rest/accounts/{accountId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/accounts/{accountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/accounts/{accountId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/accounts/{accountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /accounts/{accountId}

Parameters

Name In Type Required Description
accountId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an account

# You can also use wget
curl -X PATCH \
/opi/rest/accounts/{accountId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "customerId": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string"
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/accounts/{accountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/accounts/{accountId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/accounts/{accountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /accounts/{accountId}

Body parameter

{
  "customerId": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "customerId": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string"
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ]
}

Parameters

Name In Type Required Description
accountId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Account true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/accounts/{accountId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/accounts/{accountId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/accounts/{accountId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/accounts/{accountId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /accounts/{accountId}/tags/{tagId}

Name In Type Required Description
accountId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/accounts/{accountId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/accounts/{accountId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/accounts/{accountId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/accounts/{accountId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /accounts/{accountId}/tags/{tagId}

Name In Type Required Description
accountId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of accounts

# You can also use wget
curl -X GET \
/opi/rest/accounts \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/accounts', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /accounts

Accounts lists all test accounts that are utilized in authenticated scans or used for the scoping and consist of zero or more credentials (see /credentials).

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "type": "SMB",
    "name": "string",
    "url": "string",
    "role": "string",
    "integrationId": 0,
    "credentials": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "accountId": 0,
        "classId": 0,
        "className": "string",
        "value": "string",
        "tags": [
          {
            "id": 0,
            "customerId": 0,
            "created": "2019-08-24T14:15:22Z",
            "updated": "2019-08-24T14:15:22Z",
            "createdBy": "string",
            "updatedBy": "string",
            "createdById": 0,
            "updatedById": 0,
            "key": "string",
            "value": "string",
            "inherited": true,
            "count": 0
          }
        ]
      }
    ],
    "assetIdentifierIds": [
      0
    ],
    "scanConfigurationIds": [
      0
    ],
    "scanPolicyIds": [
      0
    ],
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Account] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» type string true none none
» name string true none The name of the entry.
» url string false none none
» role string false none none
» integrationId integer(int32) false none none
» credentials [Credential] false none none
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» accountId integer(int32) true none none
»» classId integer(int32) true none none
»» className string false none none
»» value string true none none
»» tags [Tag] false read-only [The tags]
»»» id integer(int32) false read-only The ID of the entry.
»»» customerId integer(int32) false none The ID of the customer owning the entry.
»»» created string(date-time) false read-only The timestamp when the entry was created.
»»» updated string(date-time) false read-only The timestamp when the entry was updated.
»»» createdBy string false read-only The name of the user who created the entry.
»»» updatedBy string false read-only The name of the user who updated the entry.
»»» createdById integer(int32) false read-only The ID of the user who created the entry.
»»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»»» key string true none none
»»» value string false none none
»»» inherited boolean false read-only none
»»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
» scanConfigurationIds [integer] false none none
» scanPolicyIds [integer] false none none
» tags [Tag] false read-only [The tags]

Enumerated Values

Property Value
type SMB
type SSH
type BASIC
type WEB
type AWS
type AZURE
type VSPHERE
type GCP
type DOCKER

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an account

# You can also use wget
curl -X POST \
/opi/rest/accounts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "customerId": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string"
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/accounts', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /accounts

Body parameter

{
  "customerId": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "customerId": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string"
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Account true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/accounts \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/accounts', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /accounts

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/accounts/{accountId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/accounts/{accountId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/accounts/{accountId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/accounts/{accountId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/accounts/{accountId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/accounts/{accountId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /accounts/{accountId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
accountId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Agents

Download an agent installer (Deprecated: 2024-5-21)

# You can also use wget
curl -X GET \
/opi/rest/agents/installers/download?platform=string&arch=string&pkg=string \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/installers/download',
  method: 'get',
  data: '?platform=string&arch=string&pkg=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/installers/download?platform=string&arch=string&pkg=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/agents/installers/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/agents/installers/download', params={
  'platform': 'string',  'arch': 'string',  'pkg': 'string'
}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/agents/installers/download',
  params: {
  'platform' => 'string',
'arch' => 'string',
'pkg' => 'string'
}, headers: headers

p JSON.parse(result)

GET /agents/installers/download

Parameters

Name In Type Required Description
platform query string true none
arch query string true none
pkg query string true none
customAttributes query string false none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Request for creating an agent installer

# You can also use wget
curl -X POST \
/opi/rest/agents/installers/download \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/installers/download',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "platform": "string",
  "arch": "string",
  "pkg": "string",
  "customAttributes": "string",
  "expires": "string",
  "allowedUses": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/installers/download',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/agents/installers/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/agents/installers/download', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/agents/installers/download',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /agents/installers/download

Body parameter

{
  "platform": "string",
  "arch": "string",
  "pkg": "string",
  "customAttributes": "string",
  "expires": "string",
  "allowedUses": 0
}

Parameters

Name In Type Required Description
body body AgentInstallerCreationRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get agent logs

# You can also use wget
curl -X GET \
/opi/rest/agents/{agentUuid}/logs \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/{agentUuid}/logs',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/{agentUuid}/logs',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/agents/{agentUuid}/logs", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/agents/{agentUuid}/logs', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/agents/{agentUuid}/logs',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /agents/{agentUuid}/logs

Parameters

Name In Type Required Description
agentUuid path string(uuid) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Response Headers

Status Header Type Format Description
default Count long The number of total entries, without limit and offset

Retrieve the agent version

# You can also use wget
curl -X GET \
/opi/rest/agents/version \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/version',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/version',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/agents/version", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/agents/version', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/agents/version',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /agents/version

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Download agent installer configuration file

# You can also use wget
curl -X GET \
/opi/rest/agents/installers/configuration \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/installers/configuration',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/installers/configuration',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/agents/installers/configuration", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/agents/installers/configuration', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/agents/installers/configuration',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /agents/installers/configuration

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get agent installers

# You can also use wget
curl -X GET \
/opi/rest/agents/installers \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/agents/installers',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/agents/installers',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/agents/installers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/agents/installers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/agents/installers',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /agents/installers

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Analytics

Get a list of appstaks

# You can also use wget
curl -X GET \
/opi/rest/analytics/appstaks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/appstaks',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/appstaks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/appstaks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/appstaks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/appstaks',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/appstaks

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
count query boolean false Count the total size of the data set or not

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "name": "string",
    "category": "string",
    "businessCriticality": "string",
    "lastScan": "2019-08-24T14:15:22Z",
    "grade": "string",
    "age": 0,
    "remediation": 0,
    "appStakId": 0,
    "assets": 0,
    "findings": 0,
    "hasExploits": true,
    "compliant": "COMPLIANT",
    "solutionProducts": [
      "string"
    ],
    "tags": [
      {
        "id": 0,
        "key": "string",
        "value": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsAppStak] false none none
» uuid string false read-only The UUID of the entry.
» name string false read-only The name of the entry.
» category string false read-only none
» businessCriticality string false read-only none
» lastScan string(date-time) false read-only none
» grade string false read-only none
» age integer(int64) false read-only none
» remediation integer(int64) false read-only none
» appStakId integer(int64) false read-only none
» assets integer(int64) false read-only none
» findings integer(int64) false read-only none
» hasExploits boolean false read-only none
» compliant string false read-only none
» solutionProducts [string] false read-only none
» tags [AnalyticsTag] false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» key string false read-only none
»» value string false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/analytics/findings \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/findings',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/findings',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/analytics/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/analytics/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/analytics/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /analytics/findings

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

# You can also use wget
curl -X GET \
/opi/rest/analytics/assets/trend/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/assets/trend/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/assets/trend/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/assets/trend/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/assets/trend/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/assets/trend/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/assets/trend/summary

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
group-by query string false none
values query string false none
range query string false none
slice-by query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "values": [
      {
        "label": "string",
        "value": 0,
        "values": [
          {}
        ]
      }
    ]
  }
]
Status Meaning Description Schema
default Default default response Inline

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsTrendSummary] false none none
» label string false read-only none
» values [AnalyticsSummary] false read-only none
»» label string false read-only none
»» value integer(int64) false read-only none
»» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of resource groups

# You can also use wget
curl -X GET \
/opi/rest/analytics/asset-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/asset-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/asset-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/asset-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/asset-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/asset-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/asset-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
count query boolean false Count the total size of the data set or not

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "parentUuid": "string",
    "name": "string",
    "grade": "string",
    "sourceSystemId": 0,
    "sourceSystemName": "string",
    "appstaks": 0,
    "assets": 0,
    "findings": 0,
    "appStakUuids": [
      "string"
    ],
    "tags": [
      {
        "id": 0,
        "key": "string",
        "value": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsAssetGroup] false none none
» uuid string false read-only The UUID of the entry.
» parentUuid string false read-only none
» name string false read-only The name of the entry.
» grade string false read-only none
» sourceSystemId integer(int64) false read-only none
» sourceSystemName string false read-only none
» appstaks integer(int64) false read-only none
» assets integer(int64) false read-only none
» findings integer(int64) false read-only none
» appStakUuids [string] false read-only none
» tags [AnalyticsTag] false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» key string false read-only none
»» value string false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of assets

# You can also use wget
curl -X GET \
/opi/rest/analytics/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/findings

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
count query boolean false Count the total size of the data set or not

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "likelihood": 0,
    "exploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "exploitProbabilityUpdateDate": "2019-08-24T14:15:22Z",
    "farsightLastSeen": "2019-08-24T14:15:22Z",
    "cvssV2": 0,
    "cvssV2Severity": "string",
    "cvssV3": 0,
    "cvssV3Severity": "string",
    "assetUuid": "string",
    "grade": "string",
    "gradeScore": 0,
    "age": 0,
    "remediation": 0,
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "lastScan": "2019-08-24T14:15:22Z",
    "port": 0,
    "protocol": "string",
    "name": "string",
    "solutionProduct": "string",
    "cve": "string",
    "cwe": "string",
    "status": "string",
    "sans25": 0,
    "hasExploits": true,
    "checkId": 0,
    "sourceSystemId": 0,
    "sourceSystemName": "string",
    "wasc": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ],
    "capec": [
      0
    ],
    "tags": [
      {
        "id": 0,
        "key": "string",
        "value": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsFinding] false none none
» uuid string false read-only The UUID of the entry.
» likelihood number(float) false read-only none
» exploitProbability number(float) false read-only none
» exploitProbabilityDelta number(float) false read-only none
» exploitProbabilityUpdateDate string(date-time) false read-only none
» farsightLastSeen string(date-time) false read-only none
» cvssV2 number(float) false read-only none
» cvssV2Severity string false read-only none
» cvssV3 number(float) false read-only none
» cvssV3Severity string false read-only none
» assetUuid string false read-only none
» grade string false read-only none
» gradeScore integer(int64) false read-only none
» age integer(int64) false read-only none
» remediation integer(int64) false read-only none
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» lastScan string(date-time) false read-only none
» port integer(int64) false read-only none
» protocol string false read-only none
» name string false read-only The name of the entry.
» solutionProduct string false read-only none
» cve string false read-only none
» cwe string false read-only CWE classification of the entry.
» status string false read-only none
» sans25 integer(int64) false read-only SANS 25 classification of the entry.
» hasExploits boolean false read-only none
» checkId integer(int64) false read-only none
» sourceSystemId integer(int64) false read-only none
» sourceSystemName string false read-only none
» wasc [integer] false read-only none
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» owasp2021 [integer] false read-only none
» capec [integer] false read-only CAPEC classification of the entry.
» tags [AnalyticsTag] false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» key string false read-only none
»» value string false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of categories

# You can also use wget
curl -X GET \
/opi/rest/analytics/categories \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/categories',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/categories',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/categories', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/categories',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/categories

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
count query boolean false Count the total size of the data set or not

The above code returns response like this:

default Response

[
  {
    "name": "string",
    "grade": "string",
    "appStaks": 0,
    "assets": 0,
    "findings": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsCategory] false none none
» name string false read-only The name of the entry.
» grade string false read-only none
» appStaks integer(int64) false read-only none
» assets integer(int64) false read-only none
» findings integer(int64) false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of compliance findings

# You can also use wget
curl -X GET \
/opi/rest/analytics/compliance/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/compliance/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/compliance/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/compliance/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/compliance/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/compliance/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/compliance/findings

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "assetUuid": "string",
    "age": 0,
    "remediation": 0,
    "name": "string",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "policyUuid": "string",
    "policyName": "string",
    "compliant": "COMPLIANT",
    "humanCheck": true,
    "exception": "2019-08-24T14:15:22Z",
    "exceptionUntil": "2019-08-24T14:15:22Z",
    "tags": [
      {
        "id": 0,
        "key": "string",
        "value": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsComplianceFinding] false none none
» uuid string false read-only The UUID of the entry.
» assetUuid string false read-only none
» age integer(int64) false read-only none
» remediation integer(int64) false read-only none
» name string false read-only The name of the entry.
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» policyUuid string false read-only none
» policyName string false read-only none
» compliant string false read-only none
» humanCheck boolean false read-only none
» exception string(date-time) false read-only none
» exceptionUntil string(date-time) false read-only none
» tags [AnalyticsTag] false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» key string false read-only none
»» value string false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of compliance policies

# You can also use wget
curl -X GET \
/opi/rest/analytics/compliance/polices \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/compliance/polices',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/compliance/polices',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/compliance/polices", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/compliance/polices', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/compliance/polices',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/compliance/polices

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsCompliancePolicy] false none none
» uuid string false read-only The UUID of the entry.
» name string false read-only The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get compliance summary

# You can also use wget
curl -X GET \
/opi/rest/analytics/compliance/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/compliance/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/compliance/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/compliance/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/compliance/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/compliance/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/compliance/summary

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
group-by query string false none
values query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "value": 0,
    "values": [
      {}
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsSummary] false none none
» label string false read-only none
» value integer(int64) false read-only none
» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

# You can also use wget
curl -X GET \
/opi/rest/analytics/compliance/trend/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/compliance/trend/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/compliance/trend/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/compliance/trend/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/compliance/trend/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/compliance/trend/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/compliance/trend/summary

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
group-by query string false none
values query string false none
range query string false none
slice-by query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "values": [
      {
        "label": "string",
        "value": 0,
        "values": [
          {}
        ]
      }
    ]
  }
]
Status Meaning Description Schema
default Default default response Inline

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsTrendSummary] false none none
» label string false read-only none
» values [AnalyticsSummary] false read-only none
»» label string false read-only none
»» value integer(int64) false read-only none
»» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

# You can also use wget
curl -X GET \
/opi/rest/analytics/findings/trend/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/findings/trend/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/findings/trend/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/findings/trend/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/findings/trend/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/findings/trend/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/findings/trend/summary

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
group-by query string false none
values query string false none
range query string false none
slice-by query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "values": [
      {
        "label": "string",
        "value": 0,
        "values": [
          {}
        ]
      }
    ]
  }
]
Status Meaning Description Schema
default Default default response Inline

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsTrendSummary] false none none
» label string false read-only none
» values [AnalyticsSummary] false read-only none
»» label string false read-only none
»» value integer(int64) false read-only none
»» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get appstaks summary

# You can also use wget
curl -X GET \
/opi/rest/analytics/appstaks/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/appstaks/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/appstaks/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/appstaks/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/appstaks/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/appstaks/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/appstaks/summary

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
group-by query string false none
values query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "value": 0,
    "values": [
      {}
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsSummary] false none none
» label string false read-only none
» value integer(int64) false read-only none
» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get asset groups summary

# You can also use wget
curl -X GET \
/opi/rest/analytics/asset-groups/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/asset-groups/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/asset-groups/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/asset-groups/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/asset-groups/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/asset-groups/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/asset-groups/summary

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
group-by query string false none
values query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "value": 0,
    "values": [
      {}
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsSummary] false none none
» label string false read-only none
» value integer(int64) false read-only none
» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get assets summary

# You can also use wget
curl -X GET \
/opi/rest/analytics/assets/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/assets/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/assets/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/assets/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/assets/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/assets/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/assets/summary

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
group-by query string false none
values query string false none

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "name": "string",
    "businessCriticality": "string",
    "exposed": true,
    "hasExploits": true,
    "assetGroupUuid": "string",
    "grade": "string",
    "platform": "string",
    "age": 0,
    "remediation": 0,
    "lastScan": "2019-08-24T14:15:22Z",
    "appStaks": "string",
    "provider": "string",
    "findings": 0,
    "sourceSystemId": 0,
    "sourceSystemName": "string",
    "compliant": "COMPLIANT",
    "ips": [
      "string"
    ],
    "hostnames": [
      "string"
    ],
    "sources": [
      "string"
    ],
    "categories": [
      "string"
    ],
    "appStakUuids": [
      "string"
    ],
    "solutionProducts": [
      "string"
    ],
    "tags": [
      {
        "id": 0,
        "key": "string",
        "value": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsAsset] false none none
» uuid string false read-only The UUID of the entry.
» name string false read-only The name of the entry.
» businessCriticality string false read-only none
» exposed boolean false read-only none
» hasExploits boolean false read-only none
» assetGroupUuid string false read-only none
» grade string false read-only none
» platform string false read-only none
» age integer(int64) false read-only none
» remediation integer(int64) false read-only none
» lastScan string(date-time) false read-only none
» appStaks string false read-only none
» provider string false read-only none
» findings integer(int64) false read-only none
» sourceSystemId integer(int64) false read-only none
» sourceSystemName string false read-only none
» compliant string false read-only none
» ips [string] false read-only none
» hostnames [string] false read-only none
» sources [string] false read-only none
» categories [string] false read-only none
» appStakUuids [string] false read-only none
» solutionProducts [string] false read-only none
» tags [AnalyticsTag] false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» key string false read-only none
»» value string false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get findings summary

# You can also use wget
curl -X GET \
/opi/rest/analytics/findings/summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/analytics/findings/summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/analytics/findings/summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/analytics/findings/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/analytics/findings/summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/analytics/findings/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /analytics/findings/summary

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
group-by query string false none
values query string false none

The above code returns response like this:

default Response

[
  {
    "label": "string",
    "value": 0,
    "values": [
      {}
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AnalyticsSummary] false none none
» label string false read-only none
» value integer(int64) false read-only none
» values [AnalyticsSummary] false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Appstak categories

Get an category

# You can also use wget
curl -X GET \
/opi/rest/appstak-categories/{categoryId} \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories/{categoryId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories/{categoryId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstak-categories/{categoryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstak-categories/{categoryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstak-categories/{categoryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstak-categories/{categoryId}

Parameters

Name In Type Required Description
categoryId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

Responses

Status Meaning Description Schema
default Default default response AppStakCategory

Delete an category

# You can also use wget
curl -X DELETE \
/opi/rest/appstak-categories/{categoryId} \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories/{categoryId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories/{categoryId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/appstak-categories/{categoryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/appstak-categories/{categoryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/appstak-categories/{categoryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /appstak-categories/{categoryId}

Parameters

Name In Type Required Description
categoryId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of categories

# You can also use wget
curl -X GET \
/opi/rest/appstak-categories \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstak-categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstak-categories', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstak-categories',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstak-categories

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AppStakCategory] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a category

# You can also use wget
curl -X POST \
/opi/rest/appstak-categories \
  -H 'Content-Type: */*' \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'*/*',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string"
}';
const headers = {
  'Content-Type':'*/*',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"*/*"},
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/appstak-categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': '*/*',
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/appstak-categories', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => '*/*',
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/appstak-categories',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /appstak-categories

Body parameter

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AppStakCategory true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/appstak-categories \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/appstak-categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/appstak-categories', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/appstak-categories',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /appstak-categories

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Partially update a category

# You can also use wget
curl -X PATCH \
/opi/rest/appstak-categories/{appStakCategoryId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-categories/{appStakCategoryId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-categories/{appStakCategoryId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/appstak-categories/{appStakCategoryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/appstak-categories/{appStakCategoryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/appstak-categories/{appStakCategoryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /appstak-categories/{appStakCategoryId}

Body parameter

{
  "customerId": 0,
  "name": "string"
}

Parameters

Name In Type Required Description
appStakCategoryId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AppStakCategory true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Appstaks

Get an appstak

# You can also use wget
curl -X GET \
/opi/rest/appstaks/{appStakId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstaks/{appStakId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstaks/{appStakId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstaks/{appStakId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstaks/{appStakId}

Parameters

Name In Type Required Description
appStakId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response AppStak

Delete an appstak

# You can also use wget
curl -X DELETE \
/opi/rest/appstaks/{appStakId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/appstaks/{appStakId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/appstaks/{appStakId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/appstaks/{appStakId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /appstaks/{appStakId}

Parameters

Name In Type Required Description
appStakId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an appstak

# You can also use wget
curl -X PATCH \
/opi/rest/appstaks/{appStakId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/appstaks/{appStakId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/appstaks/{appStakId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/appstaks/{appStakId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /appstaks/{appStakId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW"
}

Parameters

Name In Type Required Description
appStakId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AppStak true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/appstaks/{appStakId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/appstaks/{appStakId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/appstaks/{appStakId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/appstaks/{appStakId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /appstaks/{appStakId}/tags/{tagId}

Name In Type Required Description
appStakId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/appstaks/{appStakId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/appstaks/{appStakId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/appstaks/{appStakId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/appstaks/{appStakId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /appstaks/{appStakId}/tags/{tagId}

Name In Type Required Description
appStakId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of appstaks

# You can also use wget
curl -X GET \
/opi/rest/appstaks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstaks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstaks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstaks',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstaks

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "appStakCategoryId": 0,
    "appStakCategoryName": "string",
    "businessCriticality": "LOW",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AppStak] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» appStakCategoryId integer(int32) false none none
» appStakCategoryName string false none none
» businessCriticality string false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an appstak

# You can also use wget
curl -X POST \
/opi/rest/appstaks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/appstaks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/appstaks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/appstaks',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /appstaks

Body parameter

{
  "customerId": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AppStak true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/appstaks \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/appstaks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/appstaks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/appstaks',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /appstaks

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/appstaks/{appStakId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstaks/{appStakId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstaks/{appStakId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/appstaks/{appStakId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/appstaks/{appStakId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/appstaks/{appStakId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /appstaks/{appStakId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
appStakId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Appstak rules

Delete an appstak rule

# You can also use wget
curl -X DELETE \
/opi/rest/appstak-rules/{appStakRuleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules/{appStakRuleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules/{appStakRuleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/appstak-rules/{appStakRuleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/appstak-rules/{appStakRuleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/appstak-rules/{appStakRuleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /appstak-rules/{appStakRuleId}

Parameters

Name In Type Required Description
appStakRuleId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an appstak rule

# You can also use wget
curl -X PATCH \
/opi/rest/appstak-rules/{appStakRuleId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules/{appStakRuleId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules/{appStakRuleId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/appstak-rules/{appStakRuleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/appstak-rules/{appStakRuleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/appstak-rules/{appStakRuleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /appstak-rules/{appStakRuleId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}

Parameters

Name In Type Required Description
appStakRuleId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
skip-regex-validation query boolean false "true" to skip regexp validation
body body AppStakRule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get an appstak rule

# You can also use wget
curl -X GET \
/opi/rest/appstak-rules/{appStakId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules/{appStakId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules/{appStakId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstak-rules/{appStakId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstak-rules/{appStakId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstak-rules/{appStakId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstak-rules/{appStakId}

Parameters

Name In Type Required Description
appStakId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}

Responses

Status Meaning Description Schema
default Default default response AppStakRule

Get a list of appstak rules

# You can also use wget
curl -X GET \
/opi/rest/appstak-rules \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appstak-rules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appstak-rules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appstak-rules',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appstak-rules

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "assetUuids": [
      "string"
    ],
    "appStakId": 0,
    "ruleType": "ASSETS",
    "filters": "string",
    "dbValues": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AppStakRule] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» assetUuids [string] false none none
» appStakId integer(int32) true none none
» ruleType string true none none
» filters string false none none
» dbValues string false none none

Enumerated Values

Property Value
ruleType ASSETS
ruleType ASSETGROUPS

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an appstak rule

# You can also use wget
curl -X POST \
/opi/rest/appstak-rules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/appstak-rules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/appstak-rules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/appstak-rules',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /appstak-rules

Body parameter

{
  "customerId": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
skip-regex-validation query boolean false "true" to skip regexp validation
body body AppStakRule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/appstak-rules \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appstak-rules',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appstak-rules',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/appstak-rules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/appstak-rules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/appstak-rules',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /appstak-rules

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Appliances

Get a appliance

# You can also use wget
curl -X GET \
/opi/rest/appliances/{applianceId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appliances/{applianceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appliances/{applianceId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appliances/{applianceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appliances/{applianceId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appliances/{applianceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appliances/{applianceId}

Parameters

Name In Type Required Description
applianceId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "primary": true,
  "virtual": true,
  "revoked": "2019-08-24T14:15:22Z",
  "mac": "string",
  "updatedOnline": "2019-08-24T14:15:22Z",
  "updatedOffline": "2019-08-24T14:15:22Z",
  "versions": {
    "xmlapi": "string",
    "ui": "string",
    "scanner": "string",
    "rules": "string"
  }
}

Responses

Status Meaning Description Schema
default Default default response Appliance

Get a list of appliances

# You can also use wget
curl -X GET \
/opi/rest/appliances \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appliances',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appliances',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/appliances", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/appliances', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/appliances',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /appliances

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "primary": true,
    "virtual": true,
    "revoked": "2019-08-24T14:15:22Z",
    "mac": "string",
    "updatedOnline": "2019-08-24T14:15:22Z",
    "updatedOffline": "2019-08-24T14:15:22Z",
    "versions": {
      "xmlapi": "string",
      "ui": "string",
      "scanner": "string",
      "rules": "string"
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Appliance] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» primary boolean false read-only none
» virtual boolean false read-only none
» revoked string(date-time) false read-only none
» mac string false read-only none
» updatedOnline string(date-time) false read-only none
» updatedOffline string(date-time) false read-only none
» versions Appliance.ApplianceVersion false read-only none
»» xmlapi string false none none
»» ui string false none none
»» scanner string false none none
»» rules string false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/appliances \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/appliances',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/appliances',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/appliances", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/appliances', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/appliances',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /appliances

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Asset groups

Delete an activity

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/{assetGroupId}/activities/{activityId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/activities/{activityId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/activities/{activityId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/{assetGroupId}/activities/{activityId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/{assetGroupId}/activities/{activityId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/{assetGroupId}/activities/{activityId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/{assetGroupId}/activities/{activityId}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
activityId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get an asset group

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/{assetGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/{assetGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/{assetGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/{assetGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/{assetGroupId}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "summary": "string",
  "summaryPublishedAt": "2019-08-24T14:15:22Z",
  "path": [
    0
  ],
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "managed": true,
  "commentPendingSince": "2019-08-24T14:15:22Z",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response AssetGroup

Delete an asset group

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/{assetGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/{assetGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/{assetGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/{assetGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/{assetGroupId}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an asset group

# You can also use wget
curl -X PATCH \
/opi/rest/asset-groups/{assetGroupId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/asset-groups/{assetGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/asset-groups/{assetGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/asset-groups/{assetGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /asset-groups/{assetGroupId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/asset-groups/{assetGroupId}/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /asset-groups/{assetGroupId}/assets/{assetId}

Name In Type Required Description
assetGroupId path integer(int32) true none
assetId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/{assetGroupId}/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/{assetGroupId}/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/{assetGroupId}/assets/{assetId}

Name In Type Required Description
assetGroupId path integer(int32) true none
assetId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/asset-groups/{assetGroupId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /asset-groups/{assetGroupId}/tags/{tagId}

Name In Type Required Description
assetGroupId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/{assetGroupId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/{assetGroupId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/{assetGroupId}/tags/{tagId}

Name In Type Required Description
assetGroupId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a comment for an asset group

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/{assetGroupId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/{assetGroupId}/comments/{commentId}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
commentId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "authorIsStaff": true,
  "deleted": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
default Default default response Comment

Delete a comment for an asset group

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/{assetGroupId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/{assetGroupId}/comments/{commentId}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
commentId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a comment for an asset group

# You can also use wget
curl -X PATCH \
/opi/rest/asset-groups/{assetGroupId}/comments/{commentId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/asset-groups/{assetGroupId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /asset-groups/{assetGroupId}/comments/{commentId}

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
commentId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get comments

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/comments

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "parentId": 0,
    "comment": "string",
    "entityType": "FINDING",
    "entityId": 0,
    "supportStatus": "NOT_APPLICABLE",
    "authorIsStaff": true,
    "deleted": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Comment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» parentId integer(int32) false none The ID of the parent entry.
» comment string false none The content of the comment
» entityType string false none The type of object this comment is made for
» entityId integer(int32) false none The ID of the object this comment is made for
» supportStatus string false none Current support status of the comment
» authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
» deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add a comment to one or several asset groups

# You can also use wget
curl -X POST \
/opi/rest/asset-groups/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-groups/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-groups/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-groups/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-groups/comments

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete one or several comments for one or several asset groups

# You can also use wget
curl -X DELETE \
/opi/rest/asset-groups/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/comments',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/comments',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-groups/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-groups/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-groups/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-groups/comments

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/asset-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/asset-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/asset-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/asset-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /asset-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get activities

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/{assetGroupId}/activities \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/activities',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/activities',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/{assetGroupId}/activities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/{assetGroupId}/activities', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/{assetGroupId}/activities',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/{assetGroupId}/activities

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "assetGroupId": 0,
    "activityType": "PENTEST_COMPLETED",
    "description": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Activity] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» assetGroupId integer(int32) false read-only The id of the AssetGroup this activity is related to
» activityType string true none The type of this activity
» description string false none Description of the entry.

Enumerated Values

Property Value
activityType PENTEST_COMPLETED
activityType ONBOARDING_COMPLETED
activityType FALSE_POSITIVE_DISCARDED
activityType NEW_VULNERABILITY_CHECK
activityType EXECUTIVE_SUMMARY_UPDATED
activityType VERIFICATION_REQUEST_COMPLETED

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add an activity for an AssetGroup

# You can also use wget
curl -X POST \
/opi/rest/asset-groups/{assetGroupId}/activities \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/activities',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "activityType": "PENTEST_COMPLETED",
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/activities',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-groups/{assetGroupId}/activities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-groups/{assetGroupId}/activities', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-groups/{assetGroupId}/activities',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-groups/{assetGroupId}/activities

Body parameter

{
  "customerId": 0,
  "activityType": "PENTEST_COMPLETED",
  "description": "string"
}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Activity true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of asset groups

# You can also use wget
curl -X GET \
/opi/rest/asset-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "parentId": 0,
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "summary": "string",
    "summaryPublishedAt": "2019-08-24T14:15:22Z",
    "path": [
      0
    ],
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "managed": true,
    "commentPendingSince": "2019-08-24T14:15:22Z",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AssetGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» parentId integer(int32) false none The ID of the parent entry.
» assetIds [integer] false read-only The component assets
» assetGroupIds [integer] false read-only The children asset groups
» summary string false read-only The content of the executive summary
» summaryPublishedAt string(date-time) false read-only When the executive summary was published
» path [integer] false read-only The path of the asset group tree
» activeSubscriptionTypes [string] false read-only The assetgroup's active subscription types
» managed boolean false read-only Managed internally by (e.g SWAT_API or GhostLab)
» commentPendingSince string(date-time) false read-only The date since comment is pending
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an asset group

# You can also use wget
curl -X POST \
/opi/rest/asset-groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-groups

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the comments for an asset group

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/{assetGroupId}/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/{assetGroupId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/{assetGroupId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/{assetGroupId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/{assetGroupId}/comments

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "parentId": 0,
    "comment": "string",
    "entityType": "FINDING",
    "entityId": 0,
    "supportStatus": "NOT_APPLICABLE",
    "authorIsStaff": true,
    "deleted": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Comment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» parentId integer(int32) false none The ID of the parent entry.
» comment string false none The content of the comment
» entityType string false none The type of object this comment is made for
» entityId integer(int32) false none The ID of the object this comment is made for
» supportStatus string false none Current support status of the comment
» authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
» deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add a comment for an asset group

# You can also use wget
curl -X POST \
/opi/rest/asset-groups/{assetGroupId}/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-groups/{assetGroupId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-groups/{assetGroupId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-groups/{assetGroupId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-groups/{assetGroupId}/comments

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get subscriptions associated with the given asset group

# You can also use wget
curl -X GET \
/opi/rest/asset-groups/{assetGroupId}/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-groups/{assetGroupId}/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-groups/{assetGroupId}/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-groups/{assetGroupId}/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-groups/{assetGroupId}/subscriptions

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "type": "DAST",
    "associations": {
      "assetGroups": [
        "string"
      ]
    },
    "durationInDays": 0,
    "activeUntil": "2019-08-24T14:15:22Z",
    "activatedAt": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string",
    "template": {
      "uuid": "string",
      "variables": "string",
      "template": "string",
      "name": "string"
    },
    "customer": {
      "uuid": "string"
    },
    "limits": {
      "netsecAssets": 0,
      "netsecScans": 0,
      "netsecInternalAssets": 0,
      "netsecInternalScans": 0,
      "netsecApplianceAssets": 0,
      "netsecApplianceScans": 0,
      "netsecApplianceExternalAssets": 0,
      "netsecApplianceExternalScans": 0,
      "complianceAssets": 0,
      "complianceScans": 0,
      "complianceInternalAssets": 0,
      "complianceInternalScans": 0,
      "complianceApplianceAssets": 0,
      "complianceApplianceScans": 0,
      "complianceApplianceExternalAssets": 0,
      "complianceApplianceExternalScans": 0,
      "pciAssets": 0,
      "pciScans": 0,
      "scaleAssets": 0,
      "scaleScans": 0,
      "scaleInternalAssets": 0,
      "scaleApplianceAssets": 0,
      "scaleApplianceScans": 0,
      "scaleApplianceExternalScans": 0,
      "scaleApplianceExternalAssets": 0,
      "cloudsecAssets": 0,
      "cloudsecScans": 0,
      "networkDiscoveryScans": 0,
      "networkDiscoveryApplianceScans": 0,
      "cloudDiscoveryScans": 0,
      "cloudDiscoveryApplianceScans": 0,
      "networkAssets": 0,
      "networkScans": 0,
      "networkApplianceAssets": 0,
      "networkApplianceScans": 0,
      "dockerImageDiscoveryScans": 0,
      "dockerImageAssets": 0,
      "dockerImageScans": 0,
      "dockerImageDiscoveryApplianceScans": 0,
      "dockerImageApplianceAssets": 0,
      "dockerImageApplianceScans": 0,
      "outscanNXAssets": 0,
      "outscanNXApplianceAssets": 0
    },
    "isActive": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Subscription] false none none
» uuid string false none The UUID of the entry.
» type string false none none
» associations Subscription.Associations false none none
»» assetGroups [string] false none none
» durationInDays integer(int32) false none none
» activeUntil string(date-time) false none none
» activatedAt string(date-time) false none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.
» template Subscription.Template false none none
»» uuid string true none The UUID of the entry.
»» variables string false none none
»» template string false none none
»» name string false none The name of the entry.
» customer Subscription.Customer false none none
»» uuid string true none The UUID of the entry.
» limits Subscription.Limits false none none
»» netsecAssets integer(int32) false none The netsec assets
»» netsecScans integer(int32) false none The netsec scans
»» netsecInternalAssets integer(int32) false none The netsec internal assets
»» netsecInternalScans integer(int32) false none The netsec internal scans
»» netsecApplianceAssets integer(int32) false none The netsec appliance assets
»» netsecApplianceScans integer(int32) false none The netsec appliance scans
»» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
»» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
»» complianceAssets integer(int32) false none The compliance assets
»» complianceScans integer(int32) false none The compliance scans
»» complianceInternalAssets integer(int32) false none The compliance internal assets
»» complianceInternalScans integer(int32) false none The compliance internal scans
»» complianceApplianceAssets integer(int32) false none The compliance appliance assets
»» complianceApplianceScans integer(int32) false none The compliance appliance scans
»» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
»» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
»» pciAssets integer(int32) false none The pci assets
»» pciScans integer(int32) false none The pci scans
»» scaleAssets integer(int32) false none The scale assets
»» scaleScans integer(int32) false none The scale scans
»» scaleInternalAssets integer(int32) false none The scale internal assets
»» scaleApplianceAssets integer(int32) false none The scale appliance assets
»» scaleApplianceScans integer(int32) false none The scale appliance scans
»» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
»» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
»» cloudsecAssets integer(int32) false none The cloudsec assets
»» cloudsecScans integer(int32) false none The cloudsec scans
»» networkDiscoveryScans integer(int32) false none The network discovery scans
»» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
»» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
»» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
»» networkAssets integer(int32) false none The network assets
»» networkScans integer(int32) false none The network scans
»» networkApplianceAssets integer(int32) false none The network appliance assets
»» networkApplianceScans integer(int32) false none The network appliance scans
»» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
»» dockerImageAssets integer(int32) false none The docker image assets
»» dockerImageScans integer(int32) false none The docker image scans
»» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
»» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
»» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
»» outscanNXAssets integer(int32) false none The outscan NX assets
»» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets
» isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/asset-groups/{assetGroupId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-groups/{assetGroupId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-groups/{assetGroupId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/asset-groups/{assetGroupId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/asset-groups/{assetGroupId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/asset-groups/{assetGroupId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /asset-groups/{assetGroupId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
assetGroupId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Asset identifiers

Get an asset identifier

# You can also use wget
curl -X GET \
/opi/rest/asset-identifiers/{assetIdentifierId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-identifiers/{assetIdentifierId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-identifiers/{assetIdentifierId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-identifiers/{assetIdentifierId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-identifiers/{assetIdentifierId}

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "scannerName": "string",
  "ownership": 0,
  "customOwnership": 100,
  "firstScanId": 0,
  "lastScanId": 0,
  "source": [
    "SCOUT"
  ],
  "links": [
    0
  ],
  "assetIds": [
    0
  ],
  "assetNames": [
    "string"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "properties": {
    "type": "IP"
  }
}

Responses

Status Meaning Description Schema
default Default default response AssetIdentifier

Delete an asset identifier

# You can also use wget
curl -X DELETE \
/opi/rest/asset-identifiers/{assetIdentifierId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-identifiers/{assetIdentifierId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-identifiers/{assetIdentifierId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-identifiers/{assetIdentifierId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-identifiers/{assetIdentifierId}

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an asset identifier

# You can also use wget
curl -X PATCH \
/opi/rest/asset-identifiers/{assetIdentifierId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "customOwnership": 100,
  "source": [
    "SCOUT"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "properties": {
    "type": "IP"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/asset-identifiers/{assetIdentifierId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/asset-identifiers/{assetIdentifierId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/asset-identifiers/{assetIdentifierId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /asset-identifiers/{assetIdentifierId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "customOwnership": 100,
  "source": [
    "SCOUT"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "properties": {
    "type": "IP"
  }
}

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetIdentifier true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X DELETE \
/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-identifiers/{assetIdentifierId}/links/{assetIdentifierLinkId}

Name In Type Required Description
assetIdentifierId path integer(int32) true none
assetIdentifierLinkId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get the screenshot file for an asset identifier

# You can also use wget
curl -X GET \
/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none
screenshotFilename path string true none

The above code returns response like this:

default Response

"string"

Responses

Status Meaning Description Schema
default Default default response string

Add screenshot to asset identifier

# You can also use wget
curl -X PUT \
/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} \
  -H 'Content-Type: application/octet-stream' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/octet-stream',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
  'Content-Type':'application/octet-stream',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/octet-stream"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/octet-stream',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/octet-stream',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}

Body parameter

string

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none
screenshotFilename path string true none
body body string(byte) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete the screenshot file for an asset identifier

# You can also use wget
curl -X DELETE \
/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-identifiers/{assetIdentifierId}/screenshots/{screenshotFilename}

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none
screenshotFilename path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /asset-identifiers/{assetIdentifierId}/tags/{tagId}

Name In Type Required Description
assetIdentifierId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/asset-identifiers/{assetIdentifierId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /asset-identifiers/{assetIdentifierId}/tags/{tagId}

Name In Type Required Description
assetIdentifierId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of asset identifiers

# You can also use wget
curl -X GET \
/opi/rest/asset-identifiers \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-identifiers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-identifiers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-identifiers',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-identifiers

Asset identifiers are the most atomic elements defining the scanned assets like IP or hostname and can be associated with each other via the "links" attribute. An asset identifier is created automatically whenever a new Appsec configuration is created. It can also be added manually.

Example:

When you add an Appsec configuration with "http://demo.outpost24.com:8080", the system automatically creates an asset identifier "demo.outpost24.com" of type "hostname". If this asset identifier already exists it will be deduplicated and associated with the newly created configuration. The identity of an asset identifier is a "name", "type" and "scannerId" so "demo.outpost24.com" with "scannerId": 0 will be treated as a different asset identifier than "demo.outpost24.com" with "scannerId": 3. When a scan runs, the system will resolve the hostname to an IP address and when the scan has finished, it will add it as an asset identifier of type "IP" and link to the previously created "demo.outpost24.com".

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "presentableName": "string",
    "type": "IP",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "scannerId": 0,
    "scannerName": "string",
    "ownership": 0,
    "customOwnership": 100,
    "firstScanId": 0,
    "lastScanId": 0,
    "source": [
      "SCOUT"
    ],
    "links": [
      0
    ],
    "assetIds": [
      0
    ],
    "assetNames": [
      "string"
    ],
    "accountIds": [
      0
    ],
    "os": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "properties": {
      "type": "IP"
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AssetIdentifier] false none [The asset links]
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» presentableName string false none none
» type string true none none
» firstSeen string(date-time) false none Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false none Timestamp when the entry was seen last time.
» scannerId integer(int32) false none none
» scannerName string false read-only none
» ownership integer(int32) false read-only none
» customOwnership integer(int32) false none none
» firstScanId integer(int32) false read-only none
» lastScanId integer(int32) false read-only none
» source [string] true none none
» links [integer] false read-only none
» assetIds [integer] false read-only none
» assetNames [string] false read-only none
» accountIds [integer] false none none
» os string false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» properties BaseProperties false none The asset base properties
»» type string true none none

Enumerated Values

Property Value
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an asset identifier

# You can also use wget
curl -X POST \
/opi/rest/asset-identifiers \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "customOwnership": 100,
  "source": [
    "SCOUT"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "properties": {
    "type": "IP"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-identifiers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-identifiers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-identifiers',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-identifiers

Body parameter

{
  "customerId": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "customOwnership": 100,
  "source": [
    "SCOUT"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "properties": {
    "type": "IP"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetIdentifier true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/asset-identifiers \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/asset-identifiers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/asset-identifiers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/asset-identifiers',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /asset-identifiers

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get the screenshot list for an asset identifier

# You can also use wget
curl -X GET \
/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-identifiers/{assetIdentifierId}/screenshots',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-identifiers/{assetIdentifierId}/screenshots

Parameters

Name In Type Required Description
assetIdentifierId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X GET \
/opi/rest/asset-identifiers/{assetIdentifierId}/links \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/links',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/links',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/asset-identifiers/{assetIdentifierId}/links", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/asset-identifiers/{assetIdentifierId}/links', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/asset-identifiers/{assetIdentifierId}/links',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /asset-identifiers/{assetIdentifierId}/links

Name In Type Required Description
assetIdentifierId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "assetIdentifierId": 0,
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "type": "RESOLVES_TO"
  }
]
Status Meaning Description Schema
default Default default response Inline

Status Code default

Name Type Required Restrictions Description
anonymous [AssetIdentifierLink] false none none
» id integer(int32) false read-only The ID of the entry.
» assetIdentifierId integer(int32) true none The ID of the asset identifier associated with this entry
» firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) true none Timestamp when the entry was seen last time.
» type string true none none

Enumerated Values

Property Value
type RESOLVES_TO
type LOADS_SCRIPTS_FROM
type REFERS_IN_TLS_TO
type DNS_CNAME
type DNS_DNAME
type DNS_MX
type DNS_NS
type DNS_PTR
type DNS_SRV
type DNS_A
type DNS_AAAA
type DNS_URI
type CONTAINS
type HTML_LINKS_TO
type ARP

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

# You can also use wget
curl -X POST \
/opi/rest/asset-identifiers/{assetIdentifierId}/links \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/asset-identifiers/{assetIdentifierId}/links',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "type": "RESOLVES_TO"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/asset-identifiers/{assetIdentifierId}/links',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/asset-identifiers/{assetIdentifierId}/links", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/asset-identifiers/{assetIdentifierId}/links', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/asset-identifiers/{assetIdentifierId}/links',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /asset-identifiers/{assetIdentifierId}/links

Body parameter

{
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "type": "RESOLVES_TO"
}
Name In Type Required Description
assetIdentifierId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetIdentifierLink true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Assets

Get an asset

# You can also use wget
curl -X GET \
/opi/rest/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /assets/{assetId}

Parameters

Name In Type Required Description
assetId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "assetIdentifierTypes": [
    "IP"
  ],
  "dockerImageOs": "string",
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "uuid": "string",
  "firstScanId": 0,
  "lastScanId": 0,
  "compliant": "COMPLIANT",
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "assetIdentifiers": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "scannerName": "string",
      "ownership": 0,
      "customOwnership": 100,
      "firstScanId": 0,
      "lastScanId": 0,
      "source": [
        "SCOUT"
      ],
      "links": [
        0
      ],
      "assetIds": [
        0
      ],
      "assetNames": [
        "string"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "tags": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "key": "string",
          "value": "string",
          "inherited": true,
          "count": 0
        }
      ],
      "properties": {
        "type": "IP"
      }
    }
  ],
  "assetGroups": [
    {
      "id": 0,
      "name": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Asset

Delete an asset

# You can also use wget
curl -X DELETE \
/opi/rest/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /assets/{assetId}

Parameters

Name In Type Required Description
assetId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an asset

# You can also use wget
curl -X PATCH \
/opi/rest/assets/{assetId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /assets/{assetId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}

Parameters

Name In Type Required Description
assetId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Asset true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X DELETE \
/opi/rest/assets/{assetId}/links/{assetLinkId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/links/{assetLinkId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/links/{assetLinkId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/assets/{assetId}/links/{assetLinkId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/assets/{assetId}/links/{assetLinkId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/assets/{assetId}/links/{assetLinkId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /assets/{assetId}/links/{assetLinkId}

Name In Type Required Description
assetId path integer(int32) true none
assetLinkId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/assets/{assetId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/assets/{assetId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/assets/{assetId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/assets/{assetId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /assets/{assetId}/tags/{tagId}

Name In Type Required Description
assetId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/assets/{assetId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/assets/{assetId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/assets/{assetId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/assets/{assetId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /assets/{assetId}/tags/{tagId}

Name In Type Required Description
assetId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/assets/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/assets/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/assets/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/assets/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /assets/tags/{tagId}

Name In Type Required Description
tagId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/assets/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/assets/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/assets/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/assets/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /assets/tags/{tagId}

Name In Type Required Description
tagId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of assets

# You can also use wget
curl -X GET \
/opi/rest/assets \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/assets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/assets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/assets',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /assets

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "source": [
      "SCOUT"
    ],
    "assetIdentifierIds": [
      0
    ],
    "assetIdentifierTypes": [
      "IP"
    ],
    "dockerImageOs": "string",
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "uuid": "string",
    "firstScanId": 0,
    "lastScanId": 0,
    "compliant": "COMPLIANT",
    "cvssV2EnvironmentalVector": "string",
    "cvssV3EnvironmentalVector": "string",
    "dockerImageProperties": {
      "type": "IP"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "assetIdentifiers": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "name": "string",
        "presentableName": "string",
        "type": "IP",
        "firstSeen": "2019-08-24T14:15:22Z",
        "lastSeen": "2019-08-24T14:15:22Z",
        "scannerId": 0,
        "scannerName": "string",
        "ownership": 0,
        "customOwnership": 100,
        "firstScanId": 0,
        "lastScanId": 0,
        "source": [
          "SCOUT"
        ],
        "links": [
          0
        ],
        "assetIds": [
          0
        ],
        "assetNames": [
          "string"
        ],
        "accountIds": [
          0
        ],
        "os": "string",
        "tags": [
          {
            "id": 0,
            "customerId": 0,
            "created": "2019-08-24T14:15:22Z",
            "updated": "2019-08-24T14:15:22Z",
            "createdBy": "string",
            "updatedBy": "string",
            "createdById": 0,
            "updatedById": 0,
            "key": "string",
            "value": "string",
            "inherited": true,
            "count": 0
          }
        ],
        "properties": {
          "type": "IP"
        }
      }
    ],
    "assetGroups": [
      {
        "id": 0,
        "name": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Asset] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» source [string] true none The asset sources
» assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
» assetIdentifierTypes [string] false read-only The asset identifier types (deprecated)
» dockerImageOs string false read-only The docker image operating system name
» activeSubscriptionTypes [string] false read-only The asset's active subscription types
» uuid string false read-only The UUID of the entry.
» firstScanId integer(int32) false read-only The id of the first scan performed on the asset
» lastScanId integer(int32) false read-only The id of last scan performed on the asset
» compliant string false read-only The asset compliance status
» cvssV2EnvironmentalVector string false none The CVSS V2 environmental vector
» cvssV3EnvironmentalVector string false none The CVSS V3 environmental vector
» dockerImageProperties BaseProperties false none The asset base properties
»» type string true none none
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» assetIdentifiers [AssetIdentifier] false none The asset links
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» name string true none The name of the entry.
»» presentableName string false none none
»» type string true none none
»» firstSeen string(date-time) false none Timestamp when the entry was seen for the first time.
»» lastSeen string(date-time) false none Timestamp when the entry was seen last time.
»» scannerId integer(int32) false none none
»» scannerName string false read-only none
»» ownership integer(int32) false read-only none
»» customOwnership integer(int32) false none none
»» firstScanId integer(int32) false read-only none
»» lastScanId integer(int32) false read-only none
»» source [string] true none none
»» links [integer] false read-only none
»» assetIds [integer] false read-only none
»» assetNames [string] false read-only none
»» accountIds [integer] false none none
»» os string false none none
»» tags [Tag] false read-only [The tags]
»» properties BaseProperties false none The asset base properties
» assetGroups [Asset.AssetGroup] false read-only Information of all asset groups the asset is linked to
»» id integer(int32) false none The ID of the entry.
»» name string false none The name of the entry.

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an asset

# You can also use wget
curl -X POST \
/opi/rest/assets \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/assets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/assets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/assets',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /assets

Body parameter

{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Asset true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete one or several assets

# You can also use wget
curl -X DELETE \
/opi/rest/assets \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/assets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/assets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/assets',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /assets

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/assets \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/assets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/assets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/assets',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /assets

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Partially update one or several assets

# You can also use wget
curl -X PATCH \
/opi/rest/assets \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/assets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/assets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/assets',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /assets

Body parameter

{
  "customerId": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "assetIdentifiers": [
    {
      "customerId": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "customOwnership": 100,
      "source": [
        "SCOUT"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "properties": {
        "type": "IP"
      }
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body Asset true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X GET \
/opi/rest/assets/{assetId}/links \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/links',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/links',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/assets/{assetId}/links", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/assets/{assetId}/links', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/assets/{assetId}/links',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /assets/{assetId}/links

Name In Type Required Description
assetId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "assetId": 0,
    "assetIdentifierId": 0,
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z"
  }
]
Status Meaning Description Schema
default Default default response Inline

Status Code default

Name Type Required Restrictions Description
anonymous [AssetLink] false none none
» id integer(int32) false read-only The ID of the entry.
» assetId integer(int32) false none none
» assetIdentifierId integer(int32) true none The ID of the asset identifier associated with this entry
» firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) true none Timestamp when the entry was seen last time.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

# You can also use wget
curl -X POST \
/opi/rest/assets/{assetId}/links \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/links',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "assetId": 0,
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/links',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/assets/{assetId}/links", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/assets/{assetId}/links', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/assets/{assetId}/links',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /assets/{assetId}/links

Body parameter

{
  "assetId": 0,
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z"
}
Name In Type Required Description
assetId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body AssetLink true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get subscriptions associated with the given asset

# You can also use wget
curl -X GET \
/opi/rest/assets/{assetId}/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/assets/{assetId}/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/assets/{assetId}/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/assets/{assetId}/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /assets/{assetId}/subscriptions

Parameters

Name In Type Required Description
assetId path integer(int32) true none

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "type": "DAST",
    "associations": {
      "assetGroups": [
        "string"
      ]
    },
    "durationInDays": 0,
    "activeUntil": "2019-08-24T14:15:22Z",
    "activatedAt": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string",
    "template": {
      "uuid": "string",
      "variables": "string",
      "template": "string",
      "name": "string"
    },
    "customer": {
      "uuid": "string"
    },
    "limits": {
      "netsecAssets": 0,
      "netsecScans": 0,
      "netsecInternalAssets": 0,
      "netsecInternalScans": 0,
      "netsecApplianceAssets": 0,
      "netsecApplianceScans": 0,
      "netsecApplianceExternalAssets": 0,
      "netsecApplianceExternalScans": 0,
      "complianceAssets": 0,
      "complianceScans": 0,
      "complianceInternalAssets": 0,
      "complianceInternalScans": 0,
      "complianceApplianceAssets": 0,
      "complianceApplianceScans": 0,
      "complianceApplianceExternalAssets": 0,
      "complianceApplianceExternalScans": 0,
      "pciAssets": 0,
      "pciScans": 0,
      "scaleAssets": 0,
      "scaleScans": 0,
      "scaleInternalAssets": 0,
      "scaleApplianceAssets": 0,
      "scaleApplianceScans": 0,
      "scaleApplianceExternalScans": 0,
      "scaleApplianceExternalAssets": 0,
      "cloudsecAssets": 0,
      "cloudsecScans": 0,
      "networkDiscoveryScans": 0,
      "networkDiscoveryApplianceScans": 0,
      "cloudDiscoveryScans": 0,
      "cloudDiscoveryApplianceScans": 0,
      "networkAssets": 0,
      "networkScans": 0,
      "networkApplianceAssets": 0,
      "networkApplianceScans": 0,
      "dockerImageDiscoveryScans": 0,
      "dockerImageAssets": 0,
      "dockerImageScans": 0,
      "dockerImageDiscoveryApplianceScans": 0,
      "dockerImageApplianceAssets": 0,
      "dockerImageApplianceScans": 0,
      "outscanNXAssets": 0,
      "outscanNXApplianceAssets": 0
    },
    "isActive": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Subscription] false none none
» uuid string false none The UUID of the entry.
» type string false none none
» associations Subscription.Associations false none none
»» assetGroups [string] false none none
» durationInDays integer(int32) false none none
» activeUntil string(date-time) false none none
» activatedAt string(date-time) false none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.
» template Subscription.Template false none none
»» uuid string true none The UUID of the entry.
»» variables string false none none
»» template string false none none
»» name string false none The name of the entry.
» customer Subscription.Customer false none none
»» uuid string true none The UUID of the entry.
» limits Subscription.Limits false none none
»» netsecAssets integer(int32) false none The netsec assets
»» netsecScans integer(int32) false none The netsec scans
»» netsecInternalAssets integer(int32) false none The netsec internal assets
»» netsecInternalScans integer(int32) false none The netsec internal scans
»» netsecApplianceAssets integer(int32) false none The netsec appliance assets
»» netsecApplianceScans integer(int32) false none The netsec appliance scans
»» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
»» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
»» complianceAssets integer(int32) false none The compliance assets
»» complianceScans integer(int32) false none The compliance scans
»» complianceInternalAssets integer(int32) false none The compliance internal assets
»» complianceInternalScans integer(int32) false none The compliance internal scans
»» complianceApplianceAssets integer(int32) false none The compliance appliance assets
»» complianceApplianceScans integer(int32) false none The compliance appliance scans
»» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
»» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
»» pciAssets integer(int32) false none The pci assets
»» pciScans integer(int32) false none The pci scans
»» scaleAssets integer(int32) false none The scale assets
»» scaleScans integer(int32) false none The scale scans
»» scaleInternalAssets integer(int32) false none The scale internal assets
»» scaleApplianceAssets integer(int32) false none The scale appliance assets
»» scaleApplianceScans integer(int32) false none The scale appliance scans
»» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
»» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
»» cloudsecAssets integer(int32) false none The cloudsec assets
»» cloudsecScans integer(int32) false none The cloudsec scans
»» networkDiscoveryScans integer(int32) false none The network discovery scans
»» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
»» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
»» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
»» networkAssets integer(int32) false none The network assets
»» networkScans integer(int32) false none The network scans
»» networkApplianceAssets integer(int32) false none The network appliance assets
»» networkApplianceScans integer(int32) false none The network appliance scans
»» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
»» dockerImageAssets integer(int32) false none The docker image assets
»» dockerImageScans integer(int32) false none The docker image scans
»» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
»» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
»» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
»» outscanNXAssets integer(int32) false none The outscan NX assets
»» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets
» isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Merge two or more assets into a single asset

# You can also use wget
curl -X POST \
/opi/rest/assets/{assetId}/merge \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/merge',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/merge',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/assets/{assetId}/merge", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/assets/{assetId}/merge', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/assets/{assetId}/merge',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /assets/{assetId}/merge

Merges the selected asset records. This will reassign all identifiers to the target asset. Findings and other historical data associated with the merged records will be invalidated and removed; the target's historical data will remain unaltered.

Body parameter

[]

Parameters

Name In Type Required Description
assetId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/assets/{assetId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/assets/{assetId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/assets/{assetId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/assets/{assetId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /assets/{assetId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
assetId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags to one or several assets

# You can also use wget
curl -X PUT \
/opi/rest/assets/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/assets/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/assets/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/assets/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /assets/tags

Body parameter

[]

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Refresh tags

# You can also use wget
curl -X POST \
/opi/rest/assets/refresh-tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/refresh-tags',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/refresh-tags',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/assets/refresh-tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/assets/refresh-tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/assets/refresh-tags',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /assets/refresh-tags

Refresh tags should add all custom attributes as tags on the asset, except MAC attribute

Body parameter

[]

Parameters

Name In Type Required Description
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Split an asset based on identifier subset

# You can also use wget
curl -X POST \
/opi/rest/assets/{assetId}/split \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/assets/{assetId}/split',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/assets/{assetId}/split',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/assets/{assetId}/split", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/assets/{assetId}/split', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/assets/{assetId}/split',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /assets/{assetId}/split

Moves the selected identifiers into a new asset record. All findings will remain associated with the original asset.

Body parameter

[]

Parameters

Name In Type Required Description
assetId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Audits

Get a audit by ID

# You can also use wget
curl -X GET \
/opi/rest/audits/{auditId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/audits/{auditId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/audits/{auditId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/audits/{auditId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/audits/{auditId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/audits/{auditId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /audits/{auditId}

Parameters

Name In Type Required Description
auditId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "objectName": "string",
  "objectId": 0,
  "action": "string",
  "updatedFields": {
    "property1": "string",
    "property2": "string"
  }
}

Responses

Status Meaning Description Schema
default Default default response Audit

Get a list of audits

# You can also use wget
curl -X GET \
/opi/rest/audits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/audits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/audits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/audits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/audits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/audits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /audits

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "objectName": "string",
    "objectId": 0,
    "action": "string",
    "updatedFields": {
      "property1": "string",
      "property2": "string"
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Audit] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» objectName string false read-only none
» objectId integer(int32) false read-only none
» action string false read-only none
» updatedFields object false read-only none
»» additionalProperties string false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/audits \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/audits',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/audits',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/audits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/audits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/audits',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /audits

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Auth

Get a token

# You can also use wget
curl -X GET \
/opi/rest/auth/login \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/auth/login',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/auth/login',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/auth/login", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/auth/login', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/auth/login',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /auth/login

The above code returns response like this:

default Response

"string"

Responses

Status Meaning Description Schema
default Default default response string

Log in with username and password

# You can also use wget
curl -X POST \
/opi/rest/auth/login \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: text/plain'

var headers = {
  'Content-Type':'application/x-www-form-urlencoded',
  'Accept':'text/plain'

};

$.ajax({
  url: '/opi/rest/auth/login',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "username": "string",
  "password": "string",
  "code": "string",
  "validUntil": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/x-www-form-urlencoded',
  'Accept':'text/plain'

};

fetch('/opi/rest/auth/login',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/x-www-form-urlencoded"},
        "Accept": []string{"text/plain"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/auth/login", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': 'text/plain'
}

r = requests.post('/opi/rest/auth/login', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/x-www-form-urlencoded',
  'Accept' => 'text/plain'
}

result = RestClient.post '/opi/rest/auth/login',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /auth/login

Body parameter

username: string
password: string
code: string
validUntil: 2019-08-24T14:15:22Z

Parameters

Name In Type Required Description
body body object false none
» username body string true none
» password body string true none
» code body string false none
» validUntil body string(date-time) false When the token should expire, has to be in the future and in the ISO 8601 instant format

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Log out

# You can also use wget
curl -X POST \
/opi/rest/auth/logout \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/auth/logout',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/auth/logout',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/auth/logout", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/auth/logout', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/auth/logout',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /auth/logout

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Blueprints

Download a blueprint

# You can also use wget
curl -X GET \
/opi/rest/blueprints/download/{key} \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/blueprints/download/{key}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/blueprints/download/{key}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/blueprints/download/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/blueprints/download/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/blueprints/download/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /blueprints/download/{key}

Parameters

Name In Type Required Description
key path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Certificate

Renews certificate

# You can also use wget
curl -X POST \
/opi/rest/certificate/renew \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/certificate/renew',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "certificateSigningRequest": "string",
  "scannerId": 0,
  "key": "string",
  "service": "OUTPOST24_GLOBAL"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/certificate/renew',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/certificate/renew", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/certificate/renew', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/certificate/renew',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /certificate/renew

Body parameter

{
  "certificateSigningRequest": "string",
  "scannerId": 0,
  "key": "string",
  "service": "OUTPOST24_GLOBAL"
}

Parameters

Name In Type Required Description
body body CertificateCreationRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Checks

Get a comment for a check

# You can also use wget
curl -X GET \
/opi/rest/checks/{checkId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}/comments/{commentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}/comments/{commentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/checks/{checkId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/checks/{checkId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/checks/{checkId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /checks/{checkId}/comments/{commentId}

Parameters

Name In Type Required Description
checkId path integer(int32) true none
commentId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "authorIsStaff": true,
  "deleted": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
default Default default response Comment

Delete a comment for a check

# You can also use wget
curl -X DELETE \
/opi/rest/checks/{checkId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}/comments/{commentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}/comments/{commentId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/checks/{checkId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/checks/{checkId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/checks/{checkId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /checks/{checkId}/comments/{commentId}

Parameters

Name In Type Required Description
checkId path integer(int32) true none
commentId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a check

# You can also use wget
curl -X GET \
/opi/rest/checks/{checkId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/checks/{checkId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/checks/{checkId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/checks/{checkId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /checks/{checkId}

Parameters

Name In Type Required Description
checkId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "cve": "string",
  "name": "string",
  "nvdCvssV2Score": 0,
  "nvdCvssV3Score": 0,
  "nvdCvssV2Vector": "string",
  "cvssV3Severity": "RECOMMENDATION",
  "hasExploits": true,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "description": "string",
  "cyrating": 0,
  "previousCyrating": 0,
  "cyratingDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "exploitProbability": 0,
  "previousExploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "softwareComponent": "string",
  "owasp2017": [
    0
  ],
  "solutionType": "NOT_CLASSIFIED",
  "solution": "string",
  "solutionProduct": "string",
  "solutionTitle": "string",
  "solutionUuid": "string",
  "bugTraq": [
    0
  ],
  "nvdCvssV3Vector": "string",
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  }
}

Responses

Status Meaning Description Schema
default Default default response Check

Get a list of checks

# You can also use wget
curl -X GET \
/opi/rest/checks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/checks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/checks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/checks',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /checks

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "cve": "string",
    "name": "string",
    "nvdCvssV2Score": 0,
    "nvdCvssV3Score": 0,
    "nvdCvssV2Vector": "string",
    "cvssV3Severity": "RECOMMENDATION",
    "hasExploits": true,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "description": "string",
    "cyrating": 0,
    "previousCyrating": 0,
    "cyratingDelta": 0,
    "cyratingUpdated": "2019-08-24T14:15:22Z",
    "cyratingLastSeen": "2019-08-24T14:15:22Z",
    "exploitProbability": 0,
    "previousExploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "softwareComponent": "string",
    "owasp2017": [
      0
    ],
    "solutionType": "NOT_CLASSIFIED",
    "solution": "string",
    "solutionProduct": "string",
    "solutionTitle": "string",
    "solutionUuid": "string",
    "bugTraq": [
      0
    ],
    "nvdCvssV3Vector": "string",
    "farsight": {
      "risk": {
        "score": 0,
        "delta": 0
      },
      "updated": "2019-08-24T14:15:22Z",
      "lastThreatActivity": "2019-08-24T14:15:22Z"
    },
    "classifications": {
      "sans25": 0,
      "capec": [
        0
      ],
      "owasp2004": [
        0
      ],
      "owasp2007": [
        0
      ],
      "owasp2010": [
        0
      ],
      "owasp2013": [
        0
      ],
      "owasp2017": [
        0
      ],
      "owasp2021": [
        0
      ]
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Check] false none none
» id integer(int32) false read-only The ID of the entry.
» cve string false read-only The check CVE
» name string false read-only The name of the entry.
» nvdCvssV2Score number(double) false read-only The CVSS V2 score
» nvdCvssV3Score number(double) false read-only The CVSS V3 score
» nvdCvssV2Vector string false read-only The CVSS V2 vector
» cvssV3Severity string false read-only The CVSS V3 Severity
» hasExploits boolean false read-only Set to true when exploits are available
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» description string false read-only Description of the entry.
» cyrating number(double) false read-only none
» previousCyrating number(double) false read-only none
» cyratingDelta number(double) false read-only none
» cyratingUpdated string(date-time) false read-only none
» cyratingLastSeen string(date-time) false read-only none
» exploitProbability number(double) false read-only The exploit probability
» previousExploitProbability number(double) false read-only The previous exploit probability
» exploitProbabilityDelta number(double) false read-only The exploit probability delta
» softwareComponent string false read-only The software component
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» solutionType string false read-only The solution type
» solution string false read-only The solution
» solutionProduct string false read-only The solution product
» solutionTitle string false read-only The solution title
» solutionUuid string false read-only The solution uuid
» bugTraq [integer] false read-only An array of Bugtraq reference IDs.
» nvdCvssV3Vector string false read-only The CVSS V3 vector
» farsight Farsight false read-only The farsight concists in additional information on risk such as likelihood, threat activity
»» risk Farsight.Risk false none none
»»» score number(float) false none none
»»» delta number(float) false none none
»» updated string(date-time) false none The timestamp when the entry was updated.
»» lastThreatActivity string(date-time) false none none
» classifications Classification.Classifications false read-only The classifications such as CAPEC, OWASP20XX
»» sans25 integer(int32) false none SANS 25 classification of the entry.
»» capec [integer] false none CAPEC classification of the entry.
»» owasp2004 [integer] false none An array of OWASP Top 10 2004 classifications of the entry.
»» owasp2007 [integer] false none An array of OWASP Top 10 2007 classifications of the entry.
»» owasp2010 [integer] false none An array of OWASP Top 10 2010 classifications of the entry.
»» owasp2013 [integer] false none An array of OWASP Top 10 2013 classifications of the entry.
»» owasp2017 [integer] false none An array of OWASP Top 10 2017 classifications of the entry.
»» owasp2021 [integer] false none none

Enumerated Values

Property Value
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/checks \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/checks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/checks', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/checks',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /checks

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get the comments for a check

# You can also use wget
curl -X GET \
/opi/rest/checks/{checkId}/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/checks/{checkId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/checks/{checkId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/checks/{checkId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /checks/{checkId}/comments

Parameters

Name In Type Required Description
checkId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "parentId": 0,
    "comment": "string",
    "entityType": "FINDING",
    "entityId": 0,
    "supportStatus": "NOT_APPLICABLE",
    "authorIsStaff": true,
    "deleted": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Comment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» parentId integer(int32) false none The ID of the parent entry.
» comment string false none The content of the comment
» entityType string false none The type of object this comment is made for
» entityId integer(int32) false none The ID of the object this comment is made for
» supportStatus string false none Current support status of the comment
» authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
» deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add a comment for a check

# You can also use wget
curl -X POST \
/opi/rest/checks/{checkId}/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/checks/{checkId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/checks/{checkId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/checks/{checkId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /checks/{checkId}/comments

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
checkId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the exploits for a check

# You can also use wget
curl -X GET \
/opi/rest/checks/{checkId}/exploits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/checks/{checkId}/exploits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/checks/{checkId}/exploits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/checks/{checkId}/exploits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/checks/{checkId}/exploits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/checks/{checkId}/exploits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /checks/{checkId}/exploits

Parameters

Name In Type Required Description
checkId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "source": "Unknown",
    "cve": "string",
    "name": "string",
    "created": "2019-08-24T14:15:22Z",
    "pack": "string",
    "checkId": 0,
    "url": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Exploit] false none none
» id integer(int64) false read-only The ID of the entry.
» source string false read-only none
» cve string false read-only none
» name string false read-only The name of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» pack string false read-only none
» checkId integer(int64) false read-only none
» url string false read-only none

Enumerated Values

Property Value
source Unknown
source Core Security
source Immunity
source Exploit Database
source DSquare Security
source Contagio
source Metasploit
source SAINT
source Security Focus
source Snort
source Farsight

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Classifications

Get a classification

# You can also use wget
curl -X GET \
/opi/rest/classifications/{classificationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/classifications/{classificationId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/classifications/{classificationId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/classifications/{classificationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/classifications/{classificationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/classifications/{classificationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /classifications/{classificationId}

Parameters

Name In Type Required Description
classificationId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "cwe": 0,
  "name": "string",
  "sans25": 0,
  "capec": [
    0
  ],
  "owasp2004": [
    0
  ],
  "owasp2007": [
    0
  ],
  "owasp2010": [
    0
  ],
  "owasp2013": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ],
  "secureCodeWarrior": {
    "name": "string",
    "description": "string",
    "url": "string"
  },
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  }
}

Responses

Status Meaning Description Schema
default Default default response Classification

Get a list of classifications

# You can also use wget
curl -X GET \
/opi/rest/classifications \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/classifications',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/classifications',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/classifications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/classifications', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/classifications',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /classifications

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "cwe": 0,
    "name": "string",
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ],
    "secureCodeWarrior": {
      "name": "string",
      "description": "string",
      "url": "string"
    },
    "classifications": {
      "sans25": 0,
      "capec": [
        0
      ],
      "owasp2004": [
        0
      ],
      "owasp2007": [
        0
      ],
      "owasp2010": [
        0
      ],
      "owasp2013": [
        0
      ],
      "owasp2017": [
        0
      ],
      "owasp2021": [
        0
      ]
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Classification] false none none
» id integer(int32) false read-only The ID of the entry.
» cwe integer(int32) false read-only CWE classification of the entry.
» name string false read-only The name of the entry.
» sans25 integer(int32) false read-only SANS 25 classification of the entry.
» capec [integer] false read-only CAPEC classification of the entry.
» owasp2004 [integer] false read-only An array of OWASP Top 10 2004 classifications of the entry.
» owasp2007 [integer] false read-only An array of OWASP Top 10 2007 classifications of the entry.
» owasp2010 [integer] false read-only An array of OWASP Top 10 2010 classifications of the entry.
» owasp2013 [integer] false read-only An array of OWASP Top 10 2013 classifications of the entry.
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» owasp2021 [integer] false read-only none
» secureCodeWarrior SecureCodeWarrior false read-only The secure code warrior information on the vulnerability description and training
»» name string false none The name of the entry.
»» description string false none Description of the entry.
»» url string false none none
» classifications Classification.Classifications false read-only The classifications such as CAPEC, OWASP20XX
»» sans25 integer(int32) false none SANS 25 classification of the entry.
»» capec [integer] false none CAPEC classification of the entry.
»» owasp2004 [integer] false none An array of OWASP Top 10 2004 classifications of the entry.
»» owasp2007 [integer] false none An array of OWASP Top 10 2007 classifications of the entry.
»» owasp2010 [integer] false none An array of OWASP Top 10 2010 classifications of the entry.
»» owasp2013 [integer] false none An array of OWASP Top 10 2013 classifications of the entry.
»» owasp2017 [integer] false none An array of OWASP Top 10 2017 classifications of the entry.
»» owasp2021 [integer] false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/classifications \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/classifications',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/classifications',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/classifications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/classifications', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/classifications',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /classifications

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Compliance

# You can also use wget
curl -X PUT \
/opi/rest/compliance/findings/{findingId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/compliance/findings/{findingId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/compliance/findings/{findingId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /compliance/findings/{findingId}/tags/{tagId}

Name In Type Required Description
findingId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/compliance/findings/{findingId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/compliance/findings/{findingId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/compliance/findings/{findingId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/compliance/findings/{findingId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /compliance/findings/{findingId}/tags/{tagId}

Name In Type Required Description
findingId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a compliance finding by ID

# You can also use wget
curl -X GET \
/opi/rest/compliance/findings/{findingId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/findings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/findings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/findings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/findings/{findingId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "requirementId": 0,
  "matchId": 0,
  "assetId": 0,
  "policyId": 0,
  "policyName": "string",
  "audit": "string",
  "description": "string",
  "rationale": "string",
  "scored": true,
  "nameLong": "string",
  "nameShort": "string",
  "requirement": "string",
  "solution": "string",
  "impacts": "string",
  "notes": "string",
  "references": "string",
  "controls": "string",
  "category": "INFRASTRUCTURE",
  "source": [
    "SCOUT"
  ],
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "compliant": "COMPLIANT",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "falsePositiveBy": "string",
  "exception": "2019-08-24T14:15:22Z",
  "exceptionComment": "string",
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "exceptionBy": "string",
  "humanCheck": true,
  "firstFailed": "2019-08-24T14:15:22Z",
  "lastFailed": "2019-08-24T14:15:22Z",
  "assetName": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ComplianceFinding

Get a list of compliance findings

# You can also use wget
curl -X GET \
/opi/rest/compliance/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/findings

Parameters

Name In Type Required Description
assetIdentifierId query string false none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "requirementId": 0,
    "matchId": 0,
    "assetId": 0,
    "policyId": 0,
    "policyName": "string",
    "audit": "string",
    "description": "string",
    "rationale": "string",
    "scored": true,
    "nameLong": "string",
    "nameShort": "string",
    "requirement": "string",
    "solution": "string",
    "impacts": "string",
    "notes": "string",
    "references": "string",
    "controls": "string",
    "category": "INFRASTRUCTURE",
    "source": [
      "SCOUT"
    ],
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "firstScanId": 0,
    "lastScanId": 0,
    "compliant": "COMPLIANT",
    "falsePositive": "2019-08-24T14:15:22Z",
    "falsePositiveComment": "string",
    "falsePositiveBy": "string",
    "exception": "2019-08-24T14:15:22Z",
    "exceptionComment": "string",
    "exceptionUntil": "2019-08-24T14:15:22Z",
    "exceptionBy": "string",
    "humanCheck": true,
    "firstFailed": "2019-08-24T14:15:22Z",
    "lastFailed": "2019-08-24T14:15:22Z",
    "assetName": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ComplianceFinding] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» requirementId integer(int32) true none Id of the requirement associated with the finding
» matchId integer(int32) true none Id of the matching entity
» assetId integer(int32) true none Id of the associated asset
» policyId integer(int32) false read-only Id of the associated policy
» policyName string false read-only Name of the associated policy
» audit string false read-only Audit information related to the finding
» description string false read-only Description of the entry.
» rationale string false read-only Rationale behind the finding
» scored boolean false read-only Indicates whether the finding is scored
» nameLong string false read-only Long name associated with the finding
» nameShort string false read-only Short name associated with the finding
» requirement string false read-only Requirement details associated with the finding
» solution string false read-only Solution to address the finding
» impacts string false read-only Impacts of the finding
» notes string false read-only Additional notes related to the finding
» references string false read-only References related to the finding
» controls string false read-only Controls in place to address the finding
» category string false read-only Category of compliance requirement
» source [string] false read-only Array of sources related to the finding
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» firstScanId integer(int32) false read-only Id of the first scan associated with the finding
» lastScanId integer(int32) false read-only Id of the last scan associated with the finding
» compliant string false read-only Compliance status of the finding
» falsePositive string(date-time) false read-only Instant when the finding was marked as false positive
» falsePositiveComment string false read-only Comment related to marking the finding as false positive
» falsePositiveBy string false read-only User who marked the finding as false positive
» exception string(date-time) false read-only Instant when an exception was recorded for the finding
» exceptionComment string false read-only Comment related to the exception recorded for the finding
» exceptionUntil string(date-time) false read-only Instant until when the exception is valid
» exceptionBy string false read-only User who recorded the exception for the finding
» humanCheck boolean false read-only Indicates whether there is a human check for the finding
» firstFailed string(date-time) false read-only Instant when the finding first failed
» lastFailed string(date-time) false read-only Instant when the finding last failed
» assetName string false read-only Name of the asset associated with the finding
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
category INFRASTRUCTURE
category COMPUTE
category NETWORK
category STORAGE
category DATABASE
category BIG_DATA_AND_ANALYTICS
category SECURITY_AND_IDENTITY
category MONITORING_AND_LOGGING
category NOT_DEFINED
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/compliance/requirements \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/requirements',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/requirements',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/compliance/requirements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/compliance/requirements', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/compliance/requirements',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /compliance/requirements

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a compliance policy

# You can also use wget
curl -X GET \
/opi/rest/compliance/policies/{policyId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/policies/{policyId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/policies/{policyId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/policies/{policyId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/policies/{policyId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/policies/{policyId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/policies/{policyId}

Parameters

Name In Type Required Description
policyId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "description": "string",
  "type": "AWS"
}

Responses

Status Meaning Description Schema
default Default default response Policy

Get a list of compliance policies

# You can also use wget
curl -X GET \
/opi/rest/compliance/policies \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/policies',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/policies',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/policies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/policies', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/policies',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/policies

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "description": "string",
    "type": "AWS"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Policy] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string false read-only The name of the entry.
» description string false read-only Description of the entry.
» type string false read-only none

Enumerated Values

Property Value
type AWS
type GCP
type AZURE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a compliance requirement

# You can also use wget
curl -X GET \
/opi/rest/compliance/requirements/{requirementId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/requirements/{requirementId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/requirements/{requirementId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/requirements/{requirementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/requirements/{requirementId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/requirements/{requirementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/requirements/{requirementId}

Parameters

Name In Type Required Description
requirementId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "policyId": 0,
  "audit": "string",
  "description": "string",
  "rationale": "string",
  "scored": true,
  "nameLong": "string",
  "nameShort": "string",
  "requirementId": "string",
  "solution": "string",
  "category": "INFRASTRUCTURE",
  "notes": "string",
  "references": "string",
  "controls": "string",
  "impacts": "string"
}

Responses

Status Meaning Description Schema
default Default default response Requirement

Get a list of requirements

# You can also use wget
curl -X GET \
/opi/rest/compliance/requirements \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/requirements',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/requirements',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/compliance/requirements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/compliance/requirements', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/compliance/requirements',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /compliance/requirements

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "policyId": 0,
    "audit": "string",
    "description": "string",
    "rationale": "string",
    "scored": true,
    "nameLong": "string",
    "nameShort": "string",
    "requirementId": "string",
    "solution": "string",
    "category": "INFRASTRUCTURE",
    "notes": "string",
    "references": "string",
    "controls": "string",
    "impacts": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Requirement] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» policyId integer(int32) false read-only none
» audit string false read-only none
» description string false read-only Description of the entry.
» rationale string false read-only none
» scored boolean false read-only none
» nameLong string false read-only none
» nameShort string false read-only none
» requirementId string false read-only none
» solution string false read-only none
» category string false read-only none
» notes string false read-only none
» references string false read-only none
» controls string false read-only none
» impacts string false read-only none

Enumerated Values

Property Value
category INFRASTRUCTURE
category COMPUTE
category NETWORK
category STORAGE
category DATABASE
category BIG_DATA_AND_ANALYTICS
category SECURITY_AND_IDENTITY
category MONITORING_AND_LOGGING
category NOT_DEFINED

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Mark compliance finding as exception

# You can also use wget
curl -X POST \
/opi/rest/compliance/findings/{findingId}/mark-exception \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/mark-exception',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "exceptionComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/mark-exception',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/compliance/findings/{findingId}/mark-exception", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/compliance/findings/{findingId}/mark-exception', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/compliance/findings/{findingId}/mark-exception',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /compliance/findings/{findingId}/mark-exception

Body parameter

{
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "exceptionComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body ComplianceFindingException true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark compliance finding as false positive

# You can also use wget
curl -X POST \
/opi/rest/compliance/findings/{findingId}/mark-false-positive \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/mark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "falsePositiveComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/mark-false-positive',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/compliance/findings/{findingId}/mark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/compliance/findings/{findingId}/mark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/compliance/findings/{findingId}/mark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /compliance/findings/{findingId}/mark-false-positive

Body parameter

{
  "falsePositiveComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body ComplianceFindingFalsePositive true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/compliance/findings/{findingId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/compliance/findings/{findingId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/compliance/findings/{findingId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/compliance/findings/{findingId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /compliance/findings/{findingId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Generate a compliance report

# You can also use wget
curl -X POST \
/opi/rest/compliance/reports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "level": "Detailed",
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "filter": "string",
  "viewTemplateId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/reports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/compliance/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/compliance/reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/compliance/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /compliance/reports

Body parameter

{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "level": "Detailed",
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "filter": "string",
  "viewTemplateId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ComplianceReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Unmark finding as exception

# You can also use wget
curl -X POST \
/opi/rest/compliance/findings/{findingId}/unmark-exception \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/unmark-exception',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/unmark-exception',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/compliance/findings/{findingId}/unmark-exception", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/compliance/findings/{findingId}/unmark-exception', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/compliance/findings/{findingId}/unmark-exception',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /compliance/findings/{findingId}/unmark-exception

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Unmark finding as false positive

# You can also use wget
curl -X POST \
/opi/rest/compliance/findings/{findingId}/unmark-false-positive \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/compliance/findings/{findingId}/unmark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/compliance/findings/{findingId}/unmark-false-positive',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/compliance/findings/{findingId}/unmark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/compliance/findings/{findingId}/unmark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/compliance/findings/{findingId}/unmark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /compliance/findings/{findingId}/unmark-false-positive

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Consumption stats

Get consumption stats by ID

# You can also use wget
curl -X GET \
/opi/rest/consumption-stats/{consumptionStatsId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/consumption-stats/{consumptionStatsId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/consumption-stats/{consumptionStatsId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/consumption-stats/{consumptionStatsId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/consumption-stats/{consumptionStatsId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/consumption-stats/{consumptionStatsId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /consumption-stats/{consumptionStatsId}

Parameters

Name In Type Required Description
consumptionStatsId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "organization": "string",
  "salesAccountId": "string",
  "periodStart": "2019-08-24T14:15:22Z",
  "periodEnd": "2019-08-24T14:15:22Z",
  "appliancePeriodEnd": "2019-08-24T14:15:22Z",
  "netsecAssets": 0,
  "netsecScans": 0,
  "netsecInternalAssets": 0,
  "netsecInternalScans": 0,
  "netsecApplianceAssets": 0,
  "netsecApplianceScans": 0,
  "netsecApplianceExternalAssets": 0,
  "netsecApplianceExternalScans": 0,
  "complianceAssets": 0,
  "complianceScans": 0,
  "complianceInternalAssets": 0,
  "complianceInternalScans": 0,
  "complianceApplianceAssets": 0,
  "complianceApplianceScans": 0,
  "complianceApplianceExternalAssets": 0,
  "complianceApplianceExternalScans": 0,
  "pciAssets": 0,
  "pciScans": 0,
  "scaleAssets": 0,
  "scaleScans": 0,
  "scaleInternalAssets": 0,
  "scaleApplianceAssets": 0,
  "scaleApplianceScans": 0,
  "scaleApplianceExternalScans": 0,
  "scaleApplianceExternalAssets": 0,
  "cloudsecAssets": 0,
  "cloudsecScans": 0,
  "networkDiscoveryScans": 0,
  "networkDiscoveryApplianceScans": 0,
  "cloudDiscoveryScans": 0,
  "cloudDiscoveryApplianceScans": 0,
  "networkAssets": 0,
  "networkScans": 0,
  "networkApplianceAssets": 0,
  "networkApplianceScans": 0,
  "dockerImageDiscoveryScans": 0,
  "dockerImageAssets": 0,
  "dockerImageScans": 0,
  "dockerImageDiscoveryApplianceScans": 0,
  "dockerImageApplianceAssets": 0,
  "dockerImageApplianceScans": 0,
  "outscanNXAssets": 0,
  "outscanNXApplianceAssets": 0
}

Responses

Status Meaning Description Schema
default Default default response ConsumptionStats

Get a list of consumption stats

# You can also use wget
curl -X GET \
/opi/rest/consumption-stats \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/consumption-stats',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/consumption-stats',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/consumption-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/consumption-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/consumption-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /consumption-stats

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "organization": "string",
    "salesAccountId": "string",
    "periodStart": "2019-08-24T14:15:22Z",
    "periodEnd": "2019-08-24T14:15:22Z",
    "appliancePeriodEnd": "2019-08-24T14:15:22Z",
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ConsumptionStats] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false read-only The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» organization string false read-only none
» salesAccountId string false read-only none
» periodStart string(date-time) false none The consumption period start date
» periodEnd string(date-time) false none The consumption period end date
» appliancePeriodEnd string(date-time) false none The appliance consumption period start date
» netsecAssets integer(int32) false none The netsec assets
» netsecScans integer(int32) false none The netsec scans
» netsecInternalAssets integer(int32) false none The netsec internal assets
» netsecInternalScans integer(int32) false none The netsec internal scans
» netsecApplianceAssets integer(int32) false none The netsec appliance assets
» netsecApplianceScans integer(int32) false none The netsec appliance scans
» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
» complianceAssets integer(int32) false none The compliance assets
» complianceScans integer(int32) false none The compliance scans
» complianceInternalAssets integer(int32) false none The compliance internal assets
» complianceInternalScans integer(int32) false none The compliance internal scans
» complianceApplianceAssets integer(int32) false none The compliance appliance assets
» complianceApplianceScans integer(int32) false none The compliance appliance scans
» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
» pciAssets integer(int32) false none The pci assets
» pciScans integer(int32) false none The pci scans
» scaleAssets integer(int32) false none The scale assets
» scaleScans integer(int32) false none The scale scans
» scaleInternalAssets integer(int32) false none The scale internal assets
» scaleApplianceAssets integer(int32) false none The scale appliance assets
» scaleApplianceScans integer(int32) false none The scale appliance scans
» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
» cloudsecAssets integer(int32) false none The cloudsec assets
» cloudsecScans integer(int32) false none The cloudsec scans
» networkDiscoveryScans integer(int32) false none The network discovery scans
» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
» networkAssets integer(int32) false none The network assets
» networkScans integer(int32) false none The network scans
» networkApplianceAssets integer(int32) false none The network appliance assets
» networkApplianceScans integer(int32) false none The network appliance scans
» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
» dockerImageAssets integer(int32) false none The docker image assets
» dockerImageScans integer(int32) false none The docker image scans
» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
» outscanNXAssets integer(int32) false none The outscan NX assets
» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/consumption-stats \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/consumption-stats',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/consumption-stats',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/consumption-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/consumption-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/consumption-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /consumption-stats

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of subscriptions for consumption stats

# You can also use wget
curl -X GET \
/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/consumption-stats/{consumptionStatsId}/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /consumption-stats/{consumptionStatsId}/subscriptions

Parameters

Name In Type Required Description
consumptionStatsId path integer(int32) true none
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "type": "DAST",
    "associations": {
      "assetGroups": [
        "string"
      ]
    },
    "durationInDays": 0,
    "activeUntil": "2019-08-24T14:15:22Z",
    "activatedAt": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string",
    "template": {
      "uuid": "string",
      "variables": "string",
      "template": "string",
      "name": "string"
    },
    "customer": {
      "uuid": "string"
    },
    "limits": {
      "netsecAssets": 0,
      "netsecScans": 0,
      "netsecInternalAssets": 0,
      "netsecInternalScans": 0,
      "netsecApplianceAssets": 0,
      "netsecApplianceScans": 0,
      "netsecApplianceExternalAssets": 0,
      "netsecApplianceExternalScans": 0,
      "complianceAssets": 0,
      "complianceScans": 0,
      "complianceInternalAssets": 0,
      "complianceInternalScans": 0,
      "complianceApplianceAssets": 0,
      "complianceApplianceScans": 0,
      "complianceApplianceExternalAssets": 0,
      "complianceApplianceExternalScans": 0,
      "pciAssets": 0,
      "pciScans": 0,
      "scaleAssets": 0,
      "scaleScans": 0,
      "scaleInternalAssets": 0,
      "scaleApplianceAssets": 0,
      "scaleApplianceScans": 0,
      "scaleApplianceExternalScans": 0,
      "scaleApplianceExternalAssets": 0,
      "cloudsecAssets": 0,
      "cloudsecScans": 0,
      "networkDiscoveryScans": 0,
      "networkDiscoveryApplianceScans": 0,
      "cloudDiscoveryScans": 0,
      "cloudDiscoveryApplianceScans": 0,
      "networkAssets": 0,
      "networkScans": 0,
      "networkApplianceAssets": 0,
      "networkApplianceScans": 0,
      "dockerImageDiscoveryScans": 0,
      "dockerImageAssets": 0,
      "dockerImageScans": 0,
      "dockerImageDiscoveryApplianceScans": 0,
      "dockerImageApplianceAssets": 0,
      "dockerImageApplianceScans": 0,
      "outscanNXAssets": 0,
      "outscanNXApplianceAssets": 0
    },
    "isActive": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Subscription] false none none
» uuid string false none The UUID of the entry.
» type string false none none
» associations Subscription.Associations false none none
»» assetGroups [string] false none none
» durationInDays integer(int32) false none none
» activeUntil string(date-time) false none none
» activatedAt string(date-time) false none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.
» template Subscription.Template false none none
»» uuid string true none The UUID of the entry.
»» variables string false none none
»» template string false none none
»» name string false none The name of the entry.
» customer Subscription.Customer false none none
»» uuid string true none The UUID of the entry.
» limits Subscription.Limits false none none
»» netsecAssets integer(int32) false none The netsec assets
»» netsecScans integer(int32) false none The netsec scans
»» netsecInternalAssets integer(int32) false none The netsec internal assets
»» netsecInternalScans integer(int32) false none The netsec internal scans
»» netsecApplianceAssets integer(int32) false none The netsec appliance assets
»» netsecApplianceScans integer(int32) false none The netsec appliance scans
»» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
»» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
»» complianceAssets integer(int32) false none The compliance assets
»» complianceScans integer(int32) false none The compliance scans
»» complianceInternalAssets integer(int32) false none The compliance internal assets
»» complianceInternalScans integer(int32) false none The compliance internal scans
»» complianceApplianceAssets integer(int32) false none The compliance appliance assets
»» complianceApplianceScans integer(int32) false none The compliance appliance scans
»» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
»» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
»» pciAssets integer(int32) false none The pci assets
»» pciScans integer(int32) false none The pci scans
»» scaleAssets integer(int32) false none The scale assets
»» scaleScans integer(int32) false none The scale scans
»» scaleInternalAssets integer(int32) false none The scale internal assets
»» scaleApplianceAssets integer(int32) false none The scale appliance assets
»» scaleApplianceScans integer(int32) false none The scale appliance scans
»» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
»» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
»» cloudsecAssets integer(int32) false none The cloudsec assets
»» cloudsecScans integer(int32) false none The cloudsec scans
»» networkDiscoveryScans integer(int32) false none The network discovery scans
»» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
»» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
»» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
»» networkAssets integer(int32) false none The network assets
»» networkScans integer(int32) false none The network scans
»» networkApplianceAssets integer(int32) false none The network appliance assets
»» networkApplianceScans integer(int32) false none The network appliance scans
»» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
»» dockerImageAssets integer(int32) false none The docker image assets
»» dockerImageScans integer(int32) false none The docker image scans
»» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
»» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
»» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
»» outscanNXAssets integer(int32) false none The outscan NX assets
»» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets
» isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Credential classes

Get a credential class

# You can also use wget
curl -X GET \
/opi/rest/credential-classes/{credentialClassId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credential-classes/{credentialClassId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credential-classes/{credentialClassId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/credential-classes/{credentialClassId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/credential-classes/{credentialClassId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/credential-classes/{credentialClassId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /credential-classes/{credentialClassId}

Parameters

Name In Type Required Description
credentialClassId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "name": "string",
  "hidden": true
}

Responses

Status Meaning Description Schema
default Default default response CredentialClass

Get a list of credential classes

# You can also use wget
curl -X GET \
/opi/rest/credential-classes \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credential-classes',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credential-classes',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/credential-classes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/credential-classes', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/credential-classes',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /credential-classes

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "name": "string",
    "hidden": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [CredentialClass] false none none
» id integer(int32) false read-only The ID of the entry.
» name string false read-only The name of the entry.
» hidden boolean false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/credential-classes \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credential-classes',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credential-classes',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/credential-classes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/credential-classes', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/credential-classes',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /credential-classes

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Credentials

Get a credential

# You can also use wget
curl -X GET \
/opi/rest/credentials/{credentialId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credentials/{credentialId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credentials/{credentialId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/credentials/{credentialId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/credentials/{credentialId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/credentials/{credentialId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /credentials/{credentialId}

Credentials specify information like username, password, PIN, token, etc. that are required for the authentication. The class of each credential determines if it's retrieved in a clear-text format in the account output or not (see /credential-classes). For instance a credential classified as "password" will not be presented in clear-text in the default output of the account from the API and has to be explicitly requested from the API by sending a GET request to /credentials/{credentialId}?fields=value. Note, each attempt to retrieve a credential results in an entry being written to the audit log (see /audits).

Parameters

Name In Type Required Description
credentialId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Credential

Delete a credential

# You can also use wget
curl -X DELETE \
/opi/rest/credentials/{credentialId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credentials/{credentialId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credentials/{credentialId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/credentials/{credentialId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/credentials/{credentialId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/credentials/{credentialId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /credentials/{credentialId}

Parameters

Name In Type Required Description
credentialId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a credential

# You can also use wget
curl -X PATCH \
/opi/rest/credentials/{credentialId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credentials/{credentialId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credentials/{credentialId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/credentials/{credentialId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/credentials/{credentialId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/credentials/{credentialId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /credentials/{credentialId}

Body parameter

{
  "customerId": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string"
}

Parameters

Name In Type Required Description
credentialId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Credential true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Create a credential

# You can also use wget
curl -X POST \
/opi/rest/credentials \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/credentials',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/credentials',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/credentials", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/credentials', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/credentials',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /credentials

Body parameter

{
  "customerId": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Credential true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Customers

# You can also use wget
curl -X PUT \
/opi/rest/customers/{customerId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/customers/{customerId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/customers/{customerId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/customers/{customerId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /customers/{customerId}/tags/{tagId}

Name In Type Required Description
customerId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/customers/{customerId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/customers/{customerId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/customers/{customerId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/customers/{customerId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /customers/{customerId}/tags/{tagId}

Name In Type Required Description
customerId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get consultancy token

# You can also use wget
curl -X GET \
/opi/rest/customers/{customerId}/consultancy \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/consultancy',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/consultancy',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/{customerId}/consultancy", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/{customerId}/consultancy', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/{customerId}/consultancy',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/{customerId}/consultancy

Parameters

Name In Type Required Description
customerId path integer(int32) true none

The above code returns response like this:

default Response

"string"

Responses

Status Meaning Description Schema
default Default default response string

Get consumption stats by ID for current customer

# You can also use wget
curl -X GET \
/opi/rest/customers/me/consumption-stats/{consumptionStatsId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/me/consumption-stats/{consumptionStatsId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/me/consumption-stats/{consumptionStatsId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/me/consumption-stats/{consumptionStatsId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/me/consumption-stats/{consumptionStatsId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/me/consumption-stats/{consumptionStatsId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/me/consumption-stats/{consumptionStatsId}

Parameters

Name In Type Required Description
consumptionStatsId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "organization": "string",
  "salesAccountId": "string",
  "periodStart": "2019-08-24T14:15:22Z",
  "periodEnd": "2019-08-24T14:15:22Z",
  "appliancePeriodEnd": "2019-08-24T14:15:22Z",
  "netsecAssets": 0,
  "netsecScans": 0,
  "netsecInternalAssets": 0,
  "netsecInternalScans": 0,
  "netsecApplianceAssets": 0,
  "netsecApplianceScans": 0,
  "netsecApplianceExternalAssets": 0,
  "netsecApplianceExternalScans": 0,
  "complianceAssets": 0,
  "complianceScans": 0,
  "complianceInternalAssets": 0,
  "complianceInternalScans": 0,
  "complianceApplianceAssets": 0,
  "complianceApplianceScans": 0,
  "complianceApplianceExternalAssets": 0,
  "complianceApplianceExternalScans": 0,
  "pciAssets": 0,
  "pciScans": 0,
  "scaleAssets": 0,
  "scaleScans": 0,
  "scaleInternalAssets": 0,
  "scaleApplianceAssets": 0,
  "scaleApplianceScans": 0,
  "scaleApplianceExternalScans": 0,
  "scaleApplianceExternalAssets": 0,
  "cloudsecAssets": 0,
  "cloudsecScans": 0,
  "networkDiscoveryScans": 0,
  "networkDiscoveryApplianceScans": 0,
  "cloudDiscoveryScans": 0,
  "cloudDiscoveryApplianceScans": 0,
  "networkAssets": 0,
  "networkScans": 0,
  "networkApplianceAssets": 0,
  "networkApplianceScans": 0,
  "dockerImageDiscoveryScans": 0,
  "dockerImageAssets": 0,
  "dockerImageScans": 0,
  "dockerImageDiscoveryApplianceScans": 0,
  "dockerImageApplianceAssets": 0,
  "dockerImageApplianceScans": 0,
  "outscanNXAssets": 0,
  "outscanNXApplianceAssets": 0
}

Responses

Status Meaning Description Schema
default Default default response ConsumptionStats

Get consumption stats for current customer

# You can also use wget
curl -X GET \
/opi/rest/customers/me/consumption-stats \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/me/consumption-stats',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/me/consumption-stats',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/me/consumption-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/me/consumption-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/me/consumption-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/me/consumption-stats

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "organization": "string",
    "salesAccountId": "string",
    "periodStart": "2019-08-24T14:15:22Z",
    "periodEnd": "2019-08-24T14:15:22Z",
    "appliancePeriodEnd": "2019-08-24T14:15:22Z",
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ConsumptionStats] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false read-only The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» organization string false read-only none
» salesAccountId string false read-only none
» periodStart string(date-time) false none The consumption period start date
» periodEnd string(date-time) false none The consumption period end date
» appliancePeriodEnd string(date-time) false none The appliance consumption period start date
» netsecAssets integer(int32) false none The netsec assets
» netsecScans integer(int32) false none The netsec scans
» netsecInternalAssets integer(int32) false none The netsec internal assets
» netsecInternalScans integer(int32) false none The netsec internal scans
» netsecApplianceAssets integer(int32) false none The netsec appliance assets
» netsecApplianceScans integer(int32) false none The netsec appliance scans
» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
» complianceAssets integer(int32) false none The compliance assets
» complianceScans integer(int32) false none The compliance scans
» complianceInternalAssets integer(int32) false none The compliance internal assets
» complianceInternalScans integer(int32) false none The compliance internal scans
» complianceApplianceAssets integer(int32) false none The compliance appliance assets
» complianceApplianceScans integer(int32) false none The compliance appliance scans
» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
» pciAssets integer(int32) false none The pci assets
» pciScans integer(int32) false none The pci scans
» scaleAssets integer(int32) false none The scale assets
» scaleScans integer(int32) false none The scale scans
» scaleInternalAssets integer(int32) false none The scale internal assets
» scaleApplianceAssets integer(int32) false none The scale appliance assets
» scaleApplianceScans integer(int32) false none The scale appliance scans
» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
» cloudsecAssets integer(int32) false none The cloudsec assets
» cloudsecScans integer(int32) false none The cloudsec scans
» networkDiscoveryScans integer(int32) false none The network discovery scans
» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
» networkAssets integer(int32) false none The network assets
» networkScans integer(int32) false none The network scans
» networkApplianceAssets integer(int32) false none The network appliance assets
» networkApplianceScans integer(int32) false none The network appliance scans
» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
» dockerImageAssets integer(int32) false none The docker image assets
» dockerImageScans integer(int32) false none The docker image scans
» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
» outscanNXAssets integer(int32) false none The outscan NX assets
» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get consumption stats for a customer

# You can also use wget
curl -X GET \
/opi/rest/customers/{customerId}/consumption-stats \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/consumption-stats',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/consumption-stats',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/{customerId}/consumption-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/{customerId}/consumption-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/{customerId}/consumption-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/{customerId}/consumption-stats

Parameters

Name In Type Required Description
customerId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "organization": "string",
    "salesAccountId": "string",
    "periodStart": "2019-08-24T14:15:22Z",
    "periodEnd": "2019-08-24T14:15:22Z",
    "appliancePeriodEnd": "2019-08-24T14:15:22Z",
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ConsumptionStats] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false read-only The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» organization string false read-only none
» salesAccountId string false read-only none
» periodStart string(date-time) false none The consumption period start date
» periodEnd string(date-time) false none The consumption period end date
» appliancePeriodEnd string(date-time) false none The appliance consumption period start date
» netsecAssets integer(int32) false none The netsec assets
» netsecScans integer(int32) false none The netsec scans
» netsecInternalAssets integer(int32) false none The netsec internal assets
» netsecInternalScans integer(int32) false none The netsec internal scans
» netsecApplianceAssets integer(int32) false none The netsec appliance assets
» netsecApplianceScans integer(int32) false none The netsec appliance scans
» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
» complianceAssets integer(int32) false none The compliance assets
» complianceScans integer(int32) false none The compliance scans
» complianceInternalAssets integer(int32) false none The compliance internal assets
» complianceInternalScans integer(int32) false none The compliance internal scans
» complianceApplianceAssets integer(int32) false none The compliance appliance assets
» complianceApplianceScans integer(int32) false none The compliance appliance scans
» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
» pciAssets integer(int32) false none The pci assets
» pciScans integer(int32) false none The pci scans
» scaleAssets integer(int32) false none The scale assets
» scaleScans integer(int32) false none The scale scans
» scaleInternalAssets integer(int32) false none The scale internal assets
» scaleApplianceAssets integer(int32) false none The scale appliance assets
» scaleApplianceScans integer(int32) false none The scale appliance scans
» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
» cloudsecAssets integer(int32) false none The cloudsec assets
» cloudsecScans integer(int32) false none The cloudsec scans
» networkDiscoveryScans integer(int32) false none The network discovery scans
» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
» networkAssets integer(int32) false none The network assets
» networkScans integer(int32) false none The network scans
» networkApplianceAssets integer(int32) false none The network appliance assets
» networkApplianceScans integer(int32) false none The network appliance scans
» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
» dockerImageAssets integer(int32) false none The docker image assets
» dockerImageScans integer(int32) false none The docker image scans
» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
» outscanNXAssets integer(int32) false none The outscan NX assets
» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of subscriptions for consumption stats for current customer

# You can also use wget
curl -X GET \
/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/me/consumption-stats/{consumptionStatsId}/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/me/consumption-stats/{consumptionStatsId}/subscriptions

Parameters

Name In Type Required Description
consumptionStatsId path integer(int32) true none
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "type": "DAST",
    "associations": {
      "assetGroups": [
        "string"
      ]
    },
    "durationInDays": 0,
    "activeUntil": "2019-08-24T14:15:22Z",
    "activatedAt": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string",
    "template": {
      "uuid": "string",
      "variables": "string",
      "template": "string",
      "name": "string"
    },
    "customer": {
      "uuid": "string"
    },
    "limits": {
      "netsecAssets": 0,
      "netsecScans": 0,
      "netsecInternalAssets": 0,
      "netsecInternalScans": 0,
      "netsecApplianceAssets": 0,
      "netsecApplianceScans": 0,
      "netsecApplianceExternalAssets": 0,
      "netsecApplianceExternalScans": 0,
      "complianceAssets": 0,
      "complianceScans": 0,
      "complianceInternalAssets": 0,
      "complianceInternalScans": 0,
      "complianceApplianceAssets": 0,
      "complianceApplianceScans": 0,
      "complianceApplianceExternalAssets": 0,
      "complianceApplianceExternalScans": 0,
      "pciAssets": 0,
      "pciScans": 0,
      "scaleAssets": 0,
      "scaleScans": 0,
      "scaleInternalAssets": 0,
      "scaleApplianceAssets": 0,
      "scaleApplianceScans": 0,
      "scaleApplianceExternalScans": 0,
      "scaleApplianceExternalAssets": 0,
      "cloudsecAssets": 0,
      "cloudsecScans": 0,
      "networkDiscoveryScans": 0,
      "networkDiscoveryApplianceScans": 0,
      "cloudDiscoveryScans": 0,
      "cloudDiscoveryApplianceScans": 0,
      "networkAssets": 0,
      "networkScans": 0,
      "networkApplianceAssets": 0,
      "networkApplianceScans": 0,
      "dockerImageDiscoveryScans": 0,
      "dockerImageAssets": 0,
      "dockerImageScans": 0,
      "dockerImageDiscoveryApplianceScans": 0,
      "dockerImageApplianceAssets": 0,
      "dockerImageApplianceScans": 0,
      "outscanNXAssets": 0,
      "outscanNXApplianceAssets": 0
    },
    "isActive": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Subscription] false none none
» uuid string false none The UUID of the entry.
» type string false none none
» associations Subscription.Associations false none none
»» assetGroups [string] false none none
» durationInDays integer(int32) false none none
» activeUntil string(date-time) false none none
» activatedAt string(date-time) false none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.
» template Subscription.Template false none none
»» uuid string true none The UUID of the entry.
»» variables string false none none
»» template string false none none
»» name string false none The name of the entry.
» customer Subscription.Customer false none none
»» uuid string true none The UUID of the entry.
» limits Subscription.Limits false none none
»» netsecAssets integer(int32) false none The netsec assets
»» netsecScans integer(int32) false none The netsec scans
»» netsecInternalAssets integer(int32) false none The netsec internal assets
»» netsecInternalScans integer(int32) false none The netsec internal scans
»» netsecApplianceAssets integer(int32) false none The netsec appliance assets
»» netsecApplianceScans integer(int32) false none The netsec appliance scans
»» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
»» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
»» complianceAssets integer(int32) false none The compliance assets
»» complianceScans integer(int32) false none The compliance scans
»» complianceInternalAssets integer(int32) false none The compliance internal assets
»» complianceInternalScans integer(int32) false none The compliance internal scans
»» complianceApplianceAssets integer(int32) false none The compliance appliance assets
»» complianceApplianceScans integer(int32) false none The compliance appliance scans
»» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
»» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
»» pciAssets integer(int32) false none The pci assets
»» pciScans integer(int32) false none The pci scans
»» scaleAssets integer(int32) false none The scale assets
»» scaleScans integer(int32) false none The scale scans
»» scaleInternalAssets integer(int32) false none The scale internal assets
»» scaleApplianceAssets integer(int32) false none The scale appliance assets
»» scaleApplianceScans integer(int32) false none The scale appliance scans
»» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
»» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
»» cloudsecAssets integer(int32) false none The cloudsec assets
»» cloudsecScans integer(int32) false none The cloudsec scans
»» networkDiscoveryScans integer(int32) false none The network discovery scans
»» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
»» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
»» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
»» networkAssets integer(int32) false none The network assets
»» networkScans integer(int32) false none The network scans
»» networkApplianceAssets integer(int32) false none The network appliance assets
»» networkApplianceScans integer(int32) false none The network appliance scans
»» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
»» dockerImageAssets integer(int32) false none The docker image assets
»» dockerImageScans integer(int32) false none The docker image scans
»» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
»» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
»» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
»» outscanNXAssets integer(int32) false none The outscan NX assets
»» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets
» isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get current customer

# You can also use wget
curl -X GET \
/opi/rest/customers/me \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/me',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/me',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/me', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/me',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/me

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "country": "string",
  "active": true,
  "features": [
    "string"
  ],
  "awsExternalId": "string",
  "uuid": "string",
  "organization": "string",
  "organizationUuid": "string",
  "farsightProducts": [
    "string"
  ],
  "hasAnalytics": true,
  "salesAccountId": "string",
  "assetMigration": "2019-08-24T14:15:22Z",
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string",
  "state": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Customer

Get a customer

# You can also use wget
curl -X GET \
/opi/rest/customers/{customerId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/{customerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/{customerId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/{customerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/{customerId}

Parameters

Name In Type Required Description
customerId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "country": "string",
  "active": true,
  "features": [
    "string"
  ],
  "awsExternalId": "string",
  "uuid": "string",
  "organization": "string",
  "organizationUuid": "string",
  "farsightProducts": [
    "string"
  ],
  "hasAnalytics": true,
  "salesAccountId": "string",
  "assetMigration": "2019-08-24T14:15:22Z",
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string",
  "state": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Customer

Partially update a customer

# You can also use wget
curl -X PATCH \
/opi/rest/customers/{customerId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "features": [
    "string"
  ],
  "assetMigration": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/customers/{customerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/customers/{customerId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/customers/{customerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /customers/{customerId}

Body parameter

{
  "features": [
    "string"
  ],
  "assetMigration": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
customerId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Customer true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of customers

# You can also use wget
curl -X GET \
/opi/rest/customers \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "country": "string",
    "active": true,
    "features": [
      "string"
    ],
    "awsExternalId": "string",
    "uuid": "string",
    "organization": "string",
    "organizationUuid": "string",
    "farsightProducts": [
      "string"
    ],
    "hasAnalytics": true,
    "salesAccountId": "string",
    "assetMigration": "2019-08-24T14:15:22Z",
    "customerSuccessManagerEmail": "string",
    "accountManagerEmail": "string",
    "state": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Customer] false none none
» id integer(int32) false read-only The ID of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string false read-only The name of the entry.
» country string false read-only Country associated with the entry.
» active boolean false read-only Determines if the entry is active or not.
» features [string] false none none
» awsExternalId string false read-only none
» uuid string false read-only The UUID of the entry.
» organization string false read-only none
» organizationUuid string false read-only none
» farsightProducts [string] false read-only none
» hasAnalytics boolean false read-only none
» salesAccountId string false read-only none
» assetMigration string(date-time) false none none
» customerSuccessManagerEmail string false read-only The email to the customer success manager responsible for this customer
» accountManagerEmail string false read-only The email to the account manager responsible for this customer
» state string false read-only none
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/customers \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/customers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/customers', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/customers',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /customers

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get usage stats for a customer

# You can also use wget
curl -X GET \
/opi/rest/customers/{customerId}/usage-stats \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/usage-stats',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/usage-stats',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/customers/{customerId}/usage-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/customers/{customerId}/usage-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/customers/{customerId}/usage-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /customers/{customerId}/usage-stats

Parameters

Name In Type Required Description
customerId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "organization": "string",
    "salesAccountId": "string",
    "statsUpdated": "2019-08-24T14:15:22Z",
    "applianceStatsUpdated": "2019-08-24T14:15:22Z",
    "scaleConfigurations": 0,
    "scoutConfigurations": 0,
    "cloudsecConfigurations": 0,
    "applianceScaleConfigurations": 0,
    "users": 0,
    "lastLogin": "2019-08-24T14:15:22Z",
    "applianceUsers": 0,
    "applianceLastLogin": "2019-08-24T14:15:22Z",
    "findingsCritical": 0,
    "findingsHigh": 0,
    "findingsMedium": 0,
    "findingsLow": 0,
    "findingsRecommendations": 0,
    "applianceFindingsCritical": 0,
    "applianceFindingsHigh": 0,
    "applianceFindingsMedium": 0,
    "applianceFindingsLow": 0,
    "applianceFindingsRecommendations": 0,
    "scans": 0,
    "lastScan": "2019-08-24T14:15:22Z",
    "applianceScans": 0,
    "applianceLastScan": "2019-08-24T14:15:22Z",
    "accountsAws": 0,
    "accountsGcp": 0,
    "accountsAzure": 0,
    "accountsVsphere": 0,
    "accountsBasic": 0,
    "accountsWeb": 0,
    "applianceAccountsAws": 0,
    "applianceAccountsGcp": 0,
    "applianceAccountsAzure": 0,
    "applianceAccountsVsphere": 0,
    "applianceAccountsBasic": 0,
    "applianceAccountsWeb": 0,
    "cyr3conAssets": 0,
    "cyr3conApplianceAssets": 0,
    "agents": 0,
    "agentsScanned": 0,
    "agentsOutdated": 0,
    "applianceAgents": 0,
    "applianceAgentsScanned": 0,
    "applianceAgentsOutdated": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [UsageStats] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» organization string false read-only none
» salesAccountId string false read-only none
» statsUpdated string(date-time) false none none
» applianceStatsUpdated string(date-time) false none none
» scaleConfigurations integer(int32) false none none
» scoutConfigurations integer(int32) false none none
» cloudsecConfigurations integer(int32) false none none
» applianceScaleConfigurations integer(int32) false none none
» users integer(int32) false none none
» lastLogin string(date-time) false none none
» applianceUsers integer(int32) false none none
» applianceLastLogin string(date-time) false none none
» findingsCritical integer(int32) false none none
» findingsHigh integer(int32) false none none
» findingsMedium integer(int32) false none none
» findingsLow integer(int32) false none none
» findingsRecommendations integer(int32) false none none
» applianceFindingsCritical integer(int32) false none none
» applianceFindingsHigh integer(int32) false none none
» applianceFindingsMedium integer(int32) false none none
» applianceFindingsLow integer(int32) false none none
» applianceFindingsRecommendations integer(int32) false none none
» scans integer(int32) false none none
» lastScan string(date-time) false none none
» applianceScans integer(int32) false none none
» applianceLastScan string(date-time) false none none
» accountsAws integer(int32) false none none
» accountsGcp integer(int32) false none none
» accountsAzure integer(int32) false none none
» accountsVsphere integer(int32) false none none
» accountsBasic integer(int32) false none none
» accountsWeb integer(int32) false none none
» applianceAccountsAws integer(int32) false none none
» applianceAccountsGcp integer(int32) false none none
» applianceAccountsAzure integer(int32) false none none
» applianceAccountsVsphere integer(int32) false none none
» applianceAccountsBasic integer(int32) false none none
» applianceAccountsWeb integer(int32) false none none
» cyr3conAssets integer(int32) false none none
» cyr3conApplianceAssets integer(int32) false none none
» agents integer(int32) false none none
» agentsScanned integer(int32) false none none
» agentsOutdated integer(int32) false none none
» applianceAgents integer(int32) false none none
» applianceAgentsScanned integer(int32) false none none
» applianceAgentsOutdated integer(int32) false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/customers/{customerId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/customers/{customerId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/customers/{customerId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/customers/{customerId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/customers/{customerId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/customers/{customerId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /customers/{customerId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
customerId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Dashboards

Get a dashboard

# You can also use wget
curl -X GET \
/opi/rest/dashboards/{dashboardId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/dashboards/{dashboardId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/dashboards/{dashboardId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/dashboards/{dashboardId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /dashboards/{dashboardId}

Parameters

Name In Type Required Description
dashboardId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Dashboard

Delete a dashboard

# You can also use wget
curl -X DELETE \
/opi/rest/dashboards/{dashboardId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/dashboards/{dashboardId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/dashboards/{dashboardId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/dashboards/{dashboardId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /dashboards/{dashboardId}

Parameters

Name In Type Required Description
dashboardId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a dashboard

# You can also use wget
curl -X PATCH \
/opi/rest/dashboards/{dashboardId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/dashboards/{dashboardId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/dashboards/{dashboardId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/dashboards/{dashboardId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /dashboards/{dashboardId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ]
}

Parameters

Name In Type Required Description
dashboardId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Dashboard true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/dashboards/{dashboardId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/dashboards/{dashboardId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/dashboards/{dashboardId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /dashboards/{dashboardId}/tags/{tagId}

Name In Type Required Description
dashboardId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/dashboards/{dashboardId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/dashboards/{dashboardId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/dashboards/{dashboardId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/dashboards/{dashboardId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /dashboards/{dashboardId}/tags/{tagId}

Name In Type Required Description
dashboardId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of dashboards

# You can also use wget
curl -X GET \
/opi/rest/dashboards \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/dashboards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/dashboards', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/dashboards',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /dashboards

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "cards": [
      {
        "name": "string",
        "data": "string",
        "width": 0,
        "height": 0,
        "x": 0,
        "y": 0
      }
    ],
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Dashboard] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» cards [Dashboard.Card] false none none
»» name string false none The name of the entry.
»» data string false none none
»» width integer(int32) false none none
»» height integer(int32) false none none
»» x integer(int32) false none none
»» y integer(int32) false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a dashboard

# You can also use wget
curl -X POST \
/opi/rest/dashboards \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/dashboards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/dashboards', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/dashboards',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /dashboards

Body parameter

{
  "customerId": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Dashboard true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/dashboards \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/dashboards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/dashboards', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/dashboards',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /dashboards

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/dashboards/{dashboardId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/dashboards/{dashboardId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/dashboards/{dashboardId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/dashboards/{dashboardId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/dashboards/{dashboardId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/dashboards/{dashboardId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /dashboards/{dashboardId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
dashboardId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Decrypt

Request the decryption of an uploaded file

# You can also use wget
curl -X POST \
/opi/rest/decrypt/file \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/octet-stream' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/octet-stream',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/decrypt/file',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "file": {
    "type": "string",
    "parameters": {
      "property1": "string",
      "property2": "string"
    },
    "fileName": "string",
    "creationDate": "2019-08-24T14:15:22Z",
    "modificationDate": "2019-08-24T14:15:22Z",
    "readDate": "2019-08-24T14:15:22Z",
    "size": 0,
    "name": "string"
  },
  "data": "string"
}';
const headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/octet-stream',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/decrypt/file',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/octet-stream"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/decrypt/file", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/octet-stream',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/decrypt/file', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/octet-stream',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/decrypt/file',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /decrypt/file

Body parameter

file:
  type: string
  parameters:
    property1: string
    property2: string
  fileName: string
  creationDate: 2019-08-24T14:15:22Z
  modificationDate: 2019-08-24T14:15:22Z
  readDate: 2019-08-24T14:15:22Z
  size: 0
  name: string
data: string

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body object false none
» file body FormDataContentDisposition true none
»» type body string false none
»» parameters body object false none
»»» additionalProperties body string false none
»» fileName body string false none
»» creationDate body string(date-time) false none
»» modificationDate body string(date-time) false none
»» readDate body string(date-time) false none
»» size body integer(int64) false none
»» name body string false The name of the entry.
» data body string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Request the decryption of a file from object storage

# You can also use wget
curl -X POST \
/opi/rest/decrypt/object \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/octet-stream' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/octet-stream',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/decrypt/object',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "bucket": "string",
  "key": "string",
  "unsigned": true,
  "auditComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/octet-stream',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/decrypt/object',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/octet-stream"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/decrypt/object", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/octet-stream',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/decrypt/object', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/octet-stream',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/decrypt/object',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /decrypt/object

Body parameter

{
  "bucket": "string",
  "key": "string",
  "unsigned": true,
  "auditComment": "string"
}

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ObjectDecryptionRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Downloads

Get a download cache entry and generate a token for downloading the file, expires after 5 minutes

# You can also use wget
curl -X GET \
/opi/rest/downloads/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/downloads/{key}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/downloads/{key}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/downloads/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/downloads/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/downloads/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /downloads/{key}

Parameters

Name In Type Required Description
key path string true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete a download cache entry, and potentially associated data

# You can also use wget
curl -X DELETE \
/opi/rest/downloads/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/downloads/{key}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/downloads/{key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/downloads/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/downloads/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/downloads/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /downloads/{key}

Parameters

Name In Type Required Description
key path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Download a file

# You can also use wget
curl -X GET \
/opi/rest/downloads/download/{token} \
  -H 'Accept: */*'

var headers = {
  'Accept':'*/*'

};

$.ajax({
  url: '/opi/rest/downloads/download/{token}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*'

};

fetch('/opi/rest/downloads/download/{token}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/downloads/download/{token}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/opi/rest/downloads/download/{token}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/opi/rest/downloads/download/{token}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /downloads/download/{token}

Parameters

Name In Type Required Description
token path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of download cache entries

# You can also use wget
curl -X GET \
/opi/rest/downloads \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/downloads',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/downloads',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/downloads", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/downloads', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/downloads',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /downloads

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "created": "2019-08-24T14:15:22Z",
    "name": "string",
    "key": "string",
    "status": "string",
    "size": 0,
    "token": "string",
    "tokenExpires": "2019-08-24T14:15:22Z",
    "type": "ATTACHMENT"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [DownloadCacheEntry] false none none
» created string(date-time) false read-only The timestamp when the entry was created.
» name string false read-only The name of the entry.
» key string false read-only none
» status string false read-only none
» size integer(int64) false read-only none
» token string false read-only none
» tokenExpires string(date-time) false read-only none
» type string false read-only none

Enumerated Values

Property Value
type ATTACHMENT
type REPORT
type BLUEPRINT
type INTERNAL_BLUEPRINT
type MANAGED_REPORT
type DECRYPTED_OBJECT
type LOGS
type AGENT_INSTALLER
type UPDATE_PACKAGE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/downloads \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/downloads',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/downloads',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/downloads", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/downloads', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/downloads',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /downloads

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Compatibility endpoint for file download (Deprecated: 2021-03-04)

# You can also use wget
curl -X GET \
/opi/rest/downloads/{token} \
  -H 'Accept: */*'

var headers = {
  'Accept':'*/*'

};

$.ajax({
  url: '/opi/rest/downloads/{token}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*'

};

fetch('/opi/rest/downloads/{token}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/downloads/{token}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/opi/rest/downloads/{token}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/opi/rest/downloads/{token}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /downloads/{token}

Parameters

Name In Type Required Description
token path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Enroll

Configure database settings

# You can also use wget
curl -X POST \
/opi/rest/enroll/db-settings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'

};

$.ajax({
  url: '/opi/rest/enroll/db-settings',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "host": "string",
  "port": 1,
  "password": "string",
  "ssl": true,
  "certificate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'

};

fetch('/opi/rest/enroll/db-settings',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/enroll/db-settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('/opi/rest/enroll/db-settings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post '/opi/rest/enroll/db-settings',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /enroll/db-settings

Body parameter

{
  "host": "string",
  "port": 1,
  "password": "string",
  "ssl": true,
  "certificate": "string"
}

Parameters

Name In Type Required Description
body body DatabaseSetting true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete database settings

# You can also use wget
curl -X DELETE \
/opi/rest/enroll/db-settings \
  -H 'Accept: application/json'

var headers = {
  'Accept':'application/json'

};

$.ajax({
  url: '/opi/rest/enroll/db-settings',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json'

};

fetch('/opi/rest/enroll/db-settings',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/enroll/db-settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.delete('/opi/rest/enroll/db-settings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.delete '/opi/rest/enroll/db-settings',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /enroll/db-settings

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Enroll services

# You can also use wget
curl -X POST \
/opi/rest/enroll/services \
  -H 'Content-Type: text/plain' \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'text/plain',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/enroll/services',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
  'Content-Type':'text/plain',
  'Accept':'*/*',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/enroll/services',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"text/plain"},
        "Accept": []string{"*/*"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/enroll/services", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'text/plain',
  'Accept': '*/*',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/enroll/services', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'text/plain',
  'Accept' => '*/*',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/enroll/services',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /enroll/services

Body parameter

string

Parameters

Name In Type Required Description
body body string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Events

Get an event subscription

# You can also use wget
curl -X GET \
/opi/rest/events/subscriptions/{subscriptionId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/events/subscriptions/{subscriptionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/events/subscriptions/{subscriptionId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/events/subscriptions/{subscriptionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /events/subscriptions/{subscriptionId}

Parameters

Name In Type Required Description
subscriptionId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "integrationType": "WEBHOOK",
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response EventSubscription

Delete an event subscription

# You can also use wget
curl -X DELETE \
/opi/rest/events/subscriptions/{subscriptionId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/events/subscriptions/{subscriptionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/events/subscriptions/{subscriptionId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/events/subscriptions/{subscriptionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /events/subscriptions/{subscriptionId}

Parameters

Name In Type Required Description
subscriptionId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an event subscription

# You can also use wget
curl -X PATCH \
/opi/rest/events/subscriptions/{subscriptionId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/events/subscriptions/{subscriptionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/events/subscriptions/{subscriptionId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/events/subscriptions/{subscriptionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /events/subscriptions/{subscriptionId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  }
}

Parameters

Name In Type Required Description
subscriptionId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body EventSubscription true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /events/subscriptions/{subscriptionId}/tags/{tagId}

Name In Type Required Description
subscriptionId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/events/subscriptions/{subscriptionId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /events/subscriptions/{subscriptionId}/tags/{tagId}

Name In Type Required Description
subscriptionId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of event subscriptions

# You can also use wget
curl -X GET \
/opi/rest/events/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/events/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/events/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/events/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /events/subscriptions

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "trigger": "SCHEDULE_CREATED",
    "viewTemplateId": 0,
    "integrationId": 0,
    "integrationType": "WEBHOOK",
    "enabled": true,
    "settings": {
      "timeBefore": 0,
      "timeSince": 0,
      "diskUsage": 0,
      "metric": "NETSEC_ASSETS",
      "limit": 0,
      "userId": 0,
      "from": "TO_REVIEW",
      "to": "TO_REVIEW",
      "entityType": "FINDING"
    },
    "contentConfiguration": {
      "integrationType": "WEBHOOK"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [EventSubscription] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» trigger string true none none
» viewTemplateId integer(int32) false none none
» integrationId integer(int32) false none none
» integrationType string false read-only none
» enabled boolean false none Determines if the entry is enabled or not.
» settings EventSubscription.Settings false none none
»» timeBefore integer(int32) false none none
»» timeSince integer(int32) false none none
»» diskUsage integer(int32) false none none
»» metric string false none none
»» limit integer(int32) false none none
»» userId integer(int32) false none none
»» from string false none none
»» to string false none none
»» entityType string false none none
» contentConfiguration BaseContentConfiguration false none none
»» integrationType string true none none
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
trigger SCHEDULE_CREATED
trigger SCHEDULE_DELETED
trigger SCHEDULE_MODIFIED
trigger SCHEDULE_SCHEDULED
trigger CONFIGURATION_CREATED
trigger CONFIGURATION_DELETED
trigger CONFIGURATION_MODIFIED
trigger CONFIGURATION_STARTED
trigger CONFIGURATION_DONE
trigger SCAN_STARTED
trigger SCAN_STOPPED
trigger SCAN_DONE
trigger ASSET_NOT_RECENTLY_SEEN
trigger ASSET_SEEN
trigger ASSET_CREATED
trigger ASSET_DELETED
trigger ASSET_MODIFIED
trigger FINDING_SEEN
trigger FINDING_CREATED
trigger FINDING_MODIFIED
trigger FINDING_STATUS_TRANSITIONED
trigger FINDING_RISK_ACCEPTED_EXPIRATION
trigger WATCHED_FINDING_UPDATED
trigger USER_CREATED
trigger USER_DELETED
trigger USER_MODIFIED
trigger USER_LOGIN_ATTEMPT
trigger USER_PASSWORD_RESET
trigger ROLE_CREATED
trigger ROLE_DELETED
trigger ROLE_MODIFIED
trigger RESOURCE_GROUP_CREATED
trigger RESOURCE_GROUP_DELETED
trigger RESOURCE_GROUP_MODIFIED
trigger NEW_RELEASE_NOTES
trigger HIAB_SCANNER_MISSING
trigger HIAB_UPDATE_DONE
trigger HIAB_UPDATE_FAILED
trigger HIAB_BACKUP_DONE
trigger HIAB_BACKUP_FAILED
trigger HIAB_MAINTENANCE_PLAN_DONE
trigger HIAB_DISK_USAGE_HIGH
trigger HIAB_REBOOTED
trigger HIAB_REMOTE_SUPPORT
trigger OUTSCAN_CONSULTANCY
trigger CONSUMPTION_ABSOLUTE
trigger CONSUMPTION_RELATIVE
trigger WORKFLOW_CREATED
trigger WORKFLOW_DELETED
trigger WORKFLOW_MODIFIED
trigger WORKFLOW_STARTED
trigger WORKFLOW_DONE
trigger COMPLIANCE_CREATED
trigger COMPLIANCE_MODIFIED
trigger COMPLIANCE_RISK_EXCEPTION
trigger COMPLIANCE_RISK_EXCEPTION_EXPIRATION
trigger COMMENT_CREATED
trigger EXECUTIVE_SUMMARY_UPDATED
trigger ACTIVITY_FEED_UPDATED
integrationType WEBHOOK
integrationType EMAIL
integrationType LOG
integrationType SYSLOG
integrationType SNMP
integrationType NOTIFICATION
metric NETSEC_ASSETS
metric NETSEC_SCANS
metric NETSEC_INTERNAL_ASSETS
metric NETSEC_INTERNAL_SCANS
metric NETSEC_APPLIANCE_ASSETS
metric NETSEC_APPLIANCE_SCANS
metric NETSEC_APPLIANCE_EXTERNAL_ASSETS
metric NETSEC_APPLIANCE_EXTERNAL_SCANS
metric COMPLIANCE_ASSETS
metric COMPLIANCE_SCANS
metric COMPLIANCE_INTERNAL_ASSETS
metric COMPLIANCE_INTERNAL_SCANS
metric COMPLIANCE_APPLIANCE_ASSETS
metric COMPLIANCE_APPLIANCE_SCANS
metric COMPLIANCE_APPLIANCE_EXTERNAL_ASSETS
metric COMPLIANCE_APPLIANCE_EXTERNAL_SCANS
metric PCI_ASSETS
metric PCI_SCANS
metric SCALE_ASSETS
metric SCALE_SCANS
metric SCALE_INTERNAL_ASSETS
metric SCALE_APPLIANCE_ASSETS
metric SCALE_APPLIANCE_SCANS
metric SCALE_APPLIANCE_EXTERNAL_ASSETS
metric SCALE_APPLIANCE_EXTERNAL_SCANS
metric CLOUDSEC_ASSETS
metric CLOUDSEC_SCANS
metric NETWORK_DISCOVERY_SCANS
metric NETWORK_DISCOVERY_APPLIANCE_SCANS
metric CLOUD_DISCOVERY_SCANS
metric CLOUD_DISCOVERY_APPLIANCE_SCANS
metric NETWORK_ASSETS
metric NETWORK_SCANS
metric NETWORK_APPLIANCE_ASSETS
metric NETWORK_APPLIANCE_SCANS
metric DOCKER_IMAGE_DISCOVERY_SCANS
metric DOCKER_IMAGE_ASSETS
metric DOCKER_IMAGE_SCANS
metric DOCKER_IMAGE_DISCOVERY_APPLIANCE_SCANS
metric DOCKER_IMAGE_APPLIANCE_ASSETS
metric DOCKER_IMAGE_APPLIANCE_SCANS
metric OUTSCAN_NX_ASSETS
metric OUTSCAN_NX_APPLIANCE_ASSETS
from TO_REVIEW
from TO_VERIFY
from TO_QA
from TO_PUBLISH
from REJECTED
from PRESENT
from ACCEPTED
from FALSE_POSITIVE
from PENDING_VERIFICATION
from FIXED
from IRREPRODUCIBLE
to TO_REVIEW
to TO_VERIFY
to TO_QA
to TO_PUBLISH
to REJECTED
to PRESENT
to ACCEPTED
to FALSE_POSITIVE
to PENDING_VERIFICATION
to FIXED
to IRREPRODUCIBLE
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
integrationType WEBHOOK
integrationType EMAIL
integrationType LOG
integrationType SYSLOG
integrationType SNMP
integrationType NOTIFICATION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create event subscription

# You can also use wget
curl -X POST \
/opi/rest/events/subscriptions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/events/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/events/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/events/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /events/subscriptions

Body parameter

{
  "customerId": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body EventSubscription true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/events/subscriptions \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/events/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/events/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/events/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /events/subscriptions

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get jinja variables relevant to an event

# You can also use wget
curl -X GET \
/opi/rest/events/subscriptions/template-variables/{trigger} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/template-variables/{trigger}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/template-variables/{trigger}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/events/subscriptions/template-variables/{trigger}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/events/subscriptions/template-variables/{trigger}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/events/subscriptions/template-variables/{trigger}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /events/subscriptions/template-variables/{trigger}

Parameters

Name In Type Required Description
trigger path string true none

Enumerated Values

Parameter Value
trigger SCHEDULE_CREATED
trigger SCHEDULE_DELETED
trigger SCHEDULE_MODIFIED
trigger SCHEDULE_SCHEDULED
trigger CONFIGURATION_CREATED
trigger CONFIGURATION_DELETED
trigger CONFIGURATION_MODIFIED
trigger CONFIGURATION_STARTED
trigger CONFIGURATION_DONE
trigger SCAN_STARTED
trigger SCAN_STOPPED
trigger SCAN_DONE
trigger ASSET_NOT_RECENTLY_SEEN
trigger ASSET_SEEN
trigger ASSET_CREATED
trigger ASSET_DELETED
trigger ASSET_MODIFIED
trigger FINDING_SEEN
trigger FINDING_CREATED
trigger FINDING_MODIFIED
trigger FINDING_STATUS_TRANSITIONED
trigger FINDING_RISK_ACCEPTED_EXPIRATION
trigger WATCHED_FINDING_UPDATED
trigger USER_CREATED
trigger USER_DELETED
trigger USER_MODIFIED
trigger USER_LOGIN_ATTEMPT
trigger USER_PASSWORD_RESET
trigger ROLE_CREATED
trigger ROLE_DELETED
trigger ROLE_MODIFIED
trigger RESOURCE_GROUP_CREATED
trigger RESOURCE_GROUP_DELETED
trigger RESOURCE_GROUP_MODIFIED
trigger NEW_RELEASE_NOTES
trigger HIAB_SCANNER_MISSING
trigger HIAB_UPDATE_DONE
trigger HIAB_UPDATE_FAILED
trigger HIAB_BACKUP_DONE
trigger HIAB_BACKUP_FAILED
trigger HIAB_MAINTENANCE_PLAN_DONE
trigger HIAB_DISK_USAGE_HIGH
trigger HIAB_REBOOTED
trigger HIAB_REMOTE_SUPPORT
trigger OUTSCAN_CONSULTANCY
trigger CONSUMPTION_ABSOLUTE
trigger CONSUMPTION_RELATIVE
trigger WORKFLOW_CREATED
trigger WORKFLOW_DELETED
trigger WORKFLOW_MODIFIED
trigger WORKFLOW_STARTED
trigger WORKFLOW_DONE
trigger COMPLIANCE_CREATED
trigger COMPLIANCE_MODIFIED
trigger COMPLIANCE_RISK_EXCEPTION
trigger COMPLIANCE_RISK_EXCEPTION_EXPIRATION
trigger COMMENT_CREATED
trigger EXECUTIVE_SUMMARY_UPDATED
trigger ACTIVITY_FEED_UPDATED

The above code returns response like this:

default Response

[
  {
    "key": "string",
    "description": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [EventTemplateVariable] false none none
» key string false none The event template variable name
» description string false none Description of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/events/subscriptions/{subscriptionId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/events/subscriptions/{subscriptionId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/events/subscriptions/{subscriptionId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/events/subscriptions/{subscriptionId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/events/subscriptions/{subscriptionId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/events/subscriptions/{subscriptionId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /events/subscriptions/{subscriptionId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
subscriptionId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Exploits

Get an exploit

# You can also use wget
curl -X GET \
/opi/rest/exploits/{exploitId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/exploits/{exploitId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/exploits/{exploitId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/exploits/{exploitId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/exploits/{exploitId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/exploits/{exploitId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /exploits/{exploitId}

Parameters

Name In Type Required Description
exploitId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "source": "Unknown",
  "cve": "string",
  "name": "string",
  "created": "2019-08-24T14:15:22Z",
  "pack": "string",
  "checkId": 0,
  "url": "string"
}

Responses

Status Meaning Description Schema
default Default default response Exploit

Get a list of exploits

# You can also use wget
curl -X GET \
/opi/rest/exploits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/exploits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/exploits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/exploits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/exploits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/exploits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /exploits

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "source": "Unknown",
    "cve": "string",
    "name": "string",
    "created": "2019-08-24T14:15:22Z",
    "pack": "string",
    "checkId": 0,
    "url": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Exploit] false none none
» id integer(int64) false read-only The ID of the entry.
» source string false read-only none
» cve string false read-only none
» name string false read-only The name of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» pack string false read-only none
» checkId integer(int64) false read-only none
» url string false read-only none

Enumerated Values

Property Value
source Unknown
source Core Security
source Immunity
source Exploit Database
source DSquare Security
source Contagio
source Metasploit
source SAINT
source Security Focus
source Snort
source Farsight

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/exploits \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/exploits',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/exploits',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/exploits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/exploits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/exploits',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /exploits

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Finding template groups

Get a finding template group

# You can also use wget
curl -X GET \
/opi/rest/finding-template-groups/{findingTemplateGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups/{findingTemplateGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups/{findingTemplateGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/finding-template-groups/{findingTemplateGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/finding-template-groups/{findingTemplateGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/finding-template-groups/{findingTemplateGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /finding-template-groups/{findingTemplateGroupId}

Parameters

Name In Type Required Description
findingTemplateGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0
}

Responses

Status Meaning Description Schema
default Default default response FindingTemplateGroup

Delete a finding template group

# You can also use wget
curl -X DELETE \
/opi/rest/finding-template-groups/{findingTemplateGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups/{findingTemplateGroupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups/{findingTemplateGroupId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/finding-template-groups/{findingTemplateGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/finding-template-groups/{findingTemplateGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/finding-template-groups/{findingTemplateGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /finding-template-groups/{findingTemplateGroupId}

Parameters

Name In Type Required Description
findingTemplateGroupId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of finding template groups

# You can also use wget
curl -X GET \
/opi/rest/finding-template-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/finding-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/finding-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/finding-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /finding-template-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "parentId": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [FindingTemplateGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» parentId integer(int32) false none The ID of the parent entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a finding template group

# You can also use wget
curl -X POST \
/opi/rest/finding-template-groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/finding-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/finding-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/finding-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /finding-template-groups

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body FindingTemplateGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/finding-template-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/finding-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/finding-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/finding-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /finding-template-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Update a finding template

# You can also use wget
curl -X PATCH \
/opi/rest/finding-template-groups/{findingTemplateId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-template-groups/{findingTemplateId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-template-groups/{findingTemplateId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/finding-template-groups/{findingTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/finding-template-groups/{findingTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/finding-template-groups/{findingTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /finding-template-groups/{findingTemplateId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
findingTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body FindingTemplateGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Finding templates

Get a finding template

# You can also use wget
curl -X GET \
/opi/rest/finding-templates/{findingTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/finding-templates/{findingTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/finding-templates/{findingTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/finding-templates/{findingTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /finding-templates/{findingTemplateId}

Parameters

Name In Type Required Description
findingTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "uuid": "string",
  "groupId": 0,
  "cvssV2Score": 0,
  "cvssV3Score": 0,
  "cvssV2Severity": "RECOMMENDATION",
  "cvssV3Severity": "RECOMMENDATION",
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response FindingTemplate

Delete a finding template

# You can also use wget
curl -X DELETE \
/opi/rest/finding-templates/{findingTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/finding-templates/{findingTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/finding-templates/{findingTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/finding-templates/{findingTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /finding-templates/{findingTemplateId}

Parameters

Name In Type Required Description
findingTemplateId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Update a finding template

# You can also use wget
curl -X PATCH \
/opi/rest/finding-templates/{findingTemplateId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "uuid": "string",
  "groupId": 0,
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/finding-templates/{findingTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/finding-templates/{findingTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/finding-templates/{findingTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /finding-templates/{findingTemplateId}

Body parameter

{
  "customerId": 0,
  "uuid": "string",
  "groupId": 0,
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  }
}

Parameters

Name In Type Required Description
findingTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body FindingTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /finding-templates/{findingTemplateId}/tags/{tagId}

Name In Type Required Description
findingTemplateId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/finding-templates/{findingTemplateId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /finding-templates/{findingTemplateId}/tags/{tagId}

Name In Type Required Description
findingTemplateId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of finding templates

# You can also use wget
curl -X GET \
/opi/rest/finding-templates \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/finding-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/finding-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/finding-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /finding-templates

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "uuid": "string",
    "groupId": 0,
    "cvssV2Score": 0,
    "cvssV3Score": 0,
    "cvssV2Severity": "RECOMMENDATION",
    "cvssV3Severity": "RECOMMENDATION",
    "template": {
      "name": "string",
      "description": "string",
      "remediation": "string",
      "impact": "string",
      "recreation": "string",
      "cwe": 0,
      "cvssV2Vector": "string",
      "cvssV3Vector": "string"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [FindingTemplate] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» uuid string false none The UUID of the entry.
» groupId integer(int32) false none none
» cvssV2Score number(float) false read-only The CVSS V2 score
» cvssV3Score number(float) false read-only The CVSS V3 score
» cvssV2Severity string false read-only The CVSS V2 severity
» cvssV3Severity string false read-only The CVSS V3 severity
» template FindingTemplate.Template true none The finding template attributes
»» name string true none The name of the entry.
»» description string false none Description of the entry.
»» remediation string false none none
»» impact string false none none
»» recreation string false none none
»» cwe integer(int32) false none CWE classification of the entry.
»» cvssV2Vector string false none none
»» cvssV3Vector string false none none
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
cvssV2Severity RECOMMENDATION
cvssV2Severity LOW
cvssV2Severity MEDIUM
cvssV2Severity HIGH
cvssV2Severity CRITICAL
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a finding template

# You can also use wget
curl -X POST \
/opi/rest/finding-templates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "uuid": "string",
  "groupId": 0,
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/finding-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/finding-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/finding-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /finding-templates

Body parameter

{
  "customerId": 0,
  "uuid": "string",
  "groupId": 0,
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body FindingTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/finding-templates \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/finding-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/finding-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/finding-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /finding-templates

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/finding-templates/{findingTemplateId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/finding-templates/{findingTemplateId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/finding-templates/{findingTemplateId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/finding-templates/{findingTemplateId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/finding-templates/{findingTemplateId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/finding-templates/{findingTemplateId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /finding-templates/{findingTemplateId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
findingTemplateId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Findings

Get an attachment for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/attachments/{attachmentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/attachments/{attachmentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/attachments/{attachmentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/attachments/{attachmentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/attachments/{attachmentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/attachments/{attachmentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/attachments/{attachmentId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
attachmentId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "findingId": 0,
  "type": "OTHER",
  "name": "string"
}

Responses

Status Meaning Description Schema
default Default default response Attachment

Delete an attachment for a finding

# You can also use wget
curl -X DELETE \
/opi/rest/findings/{findingId}/attachments/{attachmentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/attachments/{attachmentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/attachments/{attachmentId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/{findingId}/attachments/{attachmentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/{findingId}/attachments/{attachmentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/{findingId}/attachments/{attachmentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/{findingId}/attachments/{attachmentId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
attachmentId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a comment for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/comments/{commentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/comments/{commentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/comments/{commentId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
commentId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "authorIsStaff": true,
  "deleted": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
default Default default response Comment

Delete a comment for a finding

# You can also use wget
curl -X DELETE \
/opi/rest/findings/{findingId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/comments/{commentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/comments/{commentId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/{findingId}/comments/{commentId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
commentId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a comment for a finding

# You can also use wget
curl -X PATCH \
/opi/rest/findings/{findingId}/comments/{commentId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/comments/{commentId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/comments/{commentId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/findings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/findings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/findings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /findings/{findingId}/comments/{commentId}

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
commentId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get comments

# You can also use wget
curl -X GET \
/opi/rest/findings/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/comments

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "parentId": 0,
    "comment": "string",
    "entityType": "FINDING",
    "entityId": 0,
    "supportStatus": "NOT_APPLICABLE",
    "authorIsStaff": true,
    "deleted": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Comment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» parentId integer(int32) false none The ID of the parent entry.
» comment string false none The content of the comment
» entityType string false none The type of object this comment is made for
» entityId integer(int32) false none The ID of the object this comment is made for
» supportStatus string false none Current support status of the comment
» authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
» deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add a comment to one or several findings

# You can also use wget
curl -X POST \
/opi/rest/findings/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/comments

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete one or several comments for one or several findings

# You can also use wget
curl -X DELETE \
/opi/rest/findings/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/comments',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/comments',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/comments

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/findings \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /findings

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a finding by ID

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "cvssScore": 0,
  "cvssSeverity": "RECOMMENDATION",
  "cvssV2Score": 0,
  "cvssV2BaseScore": 0,
  "cvssV2TemporalScore": 0,
  "cvssV2EnvironmentalScore": 0,
  "cvssV2Vector": "string",
  "cvssV2Severity": "RECOMMENDATION",
  "cvssV3Score": 0,
  "cvssV3BaseScore": 0,
  "cvssV3TemporalScore": 0,
  "cvssV3EnvironmentalScore": 0,
  "cvssV3Vector": "string",
  "cvssV3Severity": "RECOMMENDATION",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "isAccepted": true,
  "accepted": "2019-08-24T14:15:22Z",
  "acceptedComment": "string",
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "fixed": "2019-08-24T14:15:22Z",
  "commentsCount": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "source": [
    "SCOUT"
  ],
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "name": "string",
  "description": "string",
  "cve": "string",
  "cwe": "string",
  "solutionType": "NOT_CLASSIFIED",
  "solution": "string",
  "solutionProduct": "string",
  "solutionTitle": "string",
  "solutionUuid": "string",
  "exploitAvailable": true,
  "matchIds": [
    0
  ],
  "attachmentIds": [
    0
  ],
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "status": "TO_REVIEW",
  "commentPendingSince": "2019-08-24T14:15:22Z",
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "verified": "2019-08-24T14:15:22Z",
  "verifiedBy": "string",
  "verifiedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "rejected": "2019-08-24T14:15:22Z",
  "rejectedBy": "string",
  "rejectedById": 0,
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "sans25": 0,
  "owasp2004": [
    0
  ],
  "owasp2007": [
    0
  ],
  "owasp2010": [
    0
  ],
  "owasp2013": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ],
  "capec": [
    0
  ],
  "assetId": 0,
  "assetName": "string",
  "potential": true,
  "softwareComponent": "string",
  "cyrating": 0,
  "cyratingDelta": 0,
  "exploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "seenLastScan": true,
  "watching": true,
  "age": 0,
  "assetGroupIds": [
    0
  ],
  "sentTo": [
    "string"
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "bugTraq": [
    0
  ],
  "secureCodeWarrior": {
    "name": "string",
    "description": "string",
    "url": "string"
  },
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "matches": [
    {
      "type": "WAS",
      "service": {
        "name": "string",
        "scheme": "string",
        "port": 0,
        "protocol": "TCP",
        "virtualHost": "string"
      },
      "patternUuid": "string"
    }
  ],
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  },
  "ports": [
    {
      "name": "string",
      "port": 0,
      "protocol": "TCP"
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Finding

Delete a finding

# You can also use wget
curl -X DELETE \
/opi/rest/findings/{findingId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/{findingId}

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a finding

# You can also use wget
curl -X PATCH \
/opi/rest/findings/{findingId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/findings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/findings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/findings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /findings/{findingId}

Body parameter

{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Finding true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/findings/{findingId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/findings/{findingId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/findings/{findingId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/findings/{findingId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /findings/{findingId}/tags/{tagId}

Name In Type Required Description
findingId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/findings/{findingId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/{findingId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/{findingId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/{findingId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/{findingId}/tags/{tagId}

Name In Type Required Description
findingId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/findings/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/findings/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/findings/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/findings/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /findings/tags/{tagId}

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/findings/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/tags/{tagId}

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of findings

# You can also use wget
curl -X GET \
/opi/rest/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings

Findings are vulnerabilities and recommendations that were detected during the scan and are deducted from matches (see /matches) based on checks (see /checks). Checks might involve multiple conditions to trigger a finding and therefore findings can be associated with multiple matches. Findings are associated with a service (see /services) connected to an asset identifier of type "IP". Any findings detected during the scan will be associated with a service connected to the IP that was resolved during the scan.

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "checkId": 0,
    "findingTemplateId": 0,
    "cvssScore": 0,
    "cvssSeverity": "RECOMMENDATION",
    "cvssV2Score": 0,
    "cvssV2BaseScore": 0,
    "cvssV2TemporalScore": 0,
    "cvssV2EnvironmentalScore": 0,
    "cvssV2Vector": "string",
    "cvssV2Severity": "RECOMMENDATION",
    "cvssV3Score": 0,
    "cvssV3BaseScore": 0,
    "cvssV3TemporalScore": 0,
    "cvssV3EnvironmentalScore": 0,
    "cvssV3Vector": "string",
    "cvssV3Severity": "RECOMMENDATION",
    "falsePositive": "2019-08-24T14:15:22Z",
    "falsePositiveComment": "string",
    "isAccepted": true,
    "accepted": "2019-08-24T14:15:22Z",
    "acceptedComment": "string",
    "acceptedUntil": "2019-08-24T14:15:22Z",
    "fixed": "2019-08-24T14:15:22Z",
    "commentsCount": 0,
    "customName": "string",
    "customDescription": "string",
    "customCve": "string",
    "customCwe": 0,
    "customBugTraq": "string",
    "customSolution": "string",
    "solutionPatches": [
      "string"
    ],
    "customCvssV2Vector": "string",
    "customCvssV3Vector": "string",
    "source": [
      "SCOUT"
    ],
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "name": "string",
    "description": "string",
    "cve": "string",
    "cwe": "string",
    "solutionType": "NOT_CLASSIFIED",
    "solution": "string",
    "solutionProduct": "string",
    "solutionTitle": "string",
    "solutionUuid": "string",
    "exploitAvailable": true,
    "matchIds": [
      0
    ],
    "attachmentIds": [
      0
    ],
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "firstScanId": 0,
    "lastScanId": 0,
    "status": "TO_REVIEW",
    "commentPendingSince": "2019-08-24T14:15:22Z",
    "reviewed": "2019-08-24T14:15:22Z",
    "reviewedBy": "string",
    "reviewedById": 0,
    "verified": "2019-08-24T14:15:22Z",
    "verifiedBy": "string",
    "verifiedById": 0,
    "qualityAssured": "2019-08-24T14:15:22Z",
    "qualityAssuredBy": "string",
    "qualityAssuredById": 0,
    "published": "2019-08-24T14:15:22Z",
    "publishedBy": "string",
    "publishedById": 0,
    "rejected": "2019-08-24T14:15:22Z",
    "rejectedBy": "string",
    "rejectedById": 0,
    "recreation": "string",
    "alternativeRecreation": "string",
    "impact": "string",
    "sans25": 0,
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ],
    "capec": [
      0
    ],
    "assetId": 0,
    "assetName": "string",
    "potential": true,
    "softwareComponent": "string",
    "cyrating": 0,
    "cyratingDelta": 0,
    "exploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "cyratingUpdated": "2019-08-24T14:15:22Z",
    "cyratingLastSeen": "2019-08-24T14:15:22Z",
    "seenLastScan": true,
    "watching": true,
    "age": 0,
    "assetGroupIds": [
      0
    ],
    "sentTo": [
      "string"
    ],
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "bugTraq": [
      0
    ],
    "secureCodeWarrior": {
      "name": "string",
      "description": "string",
      "url": "string"
    },
    "farsight": {
      "risk": {
        "score": 0,
        "delta": 0
      },
      "updated": "2019-08-24T14:15:22Z",
      "lastThreatActivity": "2019-08-24T14:15:22Z"
    },
    "matches": [
      {
        "type": "WAS",
        "service": {
          "name": "string",
          "scheme": "string",
          "port": 0,
          "protocol": "TCP",
          "virtualHost": "string"
        },
        "patternUuid": "string"
      }
    ],
    "classifications": {
      "sans25": 0,
      "capec": [
        0
      ],
      "owasp2004": [
        0
      ],
      "owasp2007": [
        0
      ],
      "owasp2010": [
        0
      ],
      "owasp2013": [
        0
      ],
      "owasp2017": [
        0
      ],
      "owasp2021": [
        0
      ]
    },
    "ports": [
      {
        "name": "string",
        "port": 0,
        "protocol": "TCP"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Finding] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» checkId integer(int32) false none The check id associated with the finding
» findingTemplateId integer(int32) false none The finding template from which the finding was created
» cvssScore number(float) false read-only The CVSS score, take CVSS V3 if available, otherwise CVSS V2
» cvssSeverity string false read-only The CVSS severity, take CVSS V3 severity if available, otherwise CVSS V2
» cvssV2Score number(float) false read-only The CVSS V2 score
» cvssV2BaseScore number(float) false read-only The CVSS V2 base score
» cvssV2TemporalScore number(float) false read-only The CVSS V2 temporal score
» cvssV2EnvironmentalScore number(float) false read-only The CVSS V2 environmental score
» cvssV2Vector string false read-only The CVSS V2 vector
» cvssV2Severity string false read-only The CVSS V2 severity
» cvssV3Score number(float) false read-only The CVSS V3 score
» cvssV3BaseScore number(float) false read-only The CVSS V3 base score
» cvssV3TemporalScore number(float) false read-only The CVSS V3 temporal score
» cvssV3EnvironmentalScore number(float) false read-only The CVSS V3 environmental score
» cvssV3Vector string false read-only The CVSS V3 vector
» cvssV3Severity string false read-only The CVSS V3 severity
» falsePositive string(date-time) false read-only The date when marked as false positive
» falsePositiveComment string false read-only The false positive comment
» isAccepted boolean false read-only Set to true when the risk is accepted
» accepted string(date-time) false read-only The date when the finding was marked as accepted risk.
» acceptedComment string false read-only The accepted comment
» acceptedUntil string(date-time) false read-only The date when the risk acceptance will expire.
» fixed string(date-time) false read-only The date when the risk was fixed
» commentsCount integer(int32) false read-only The number of comments
» customName string false none The custom name
» customDescription string false none The custom description
» customCve string false none The custom CVE
» customCwe integer(int32) false none The custom CWE
» customBugTraq string false none The custom bug track
» customSolution string false none The custom solution
» solutionPatches [string] false none The solution patches
» customCvssV2Vector string false none The custom CVSS V2 vector
» customCvssV3Vector string false none The custom CVSS V3 vector
» source [string] false read-only The scan sources
» activeSubscriptionTypes [string] false read-only The finding's active subscription types
» name string false read-only The name of the entry.
» description string false read-only Description of the entry.
» cve string false read-only The finding CVE
» cwe string false read-only CWE classification of the entry.
» solutionType string false read-only The solution type
» solution string false read-only The solution
» solutionProduct string false read-only The solution product
» solutionTitle string false read-only The solution title
» solutionUuid string false read-only The solution uuid
» exploitAvailable boolean false read-only Set to true when exploits are available
» matchIds [integer] false none The match ids
» attachmentIds [integer] false read-only The attachments ids
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» firstScanId integer(int32) false read-only The id of the first scan
» lastScanId integer(int32) false read-only The id of the last scan
» status string false read-only The finding status
» commentPendingSince string(date-time) false read-only The date since comment is pending
» reviewed string(date-time) false read-only The finding reviewed date
» reviewedBy string false read-only The username of the user that reviewed the finding
» reviewedById integer(int32) false read-only The user ID of the user that reviewed the finding
» verified string(date-time) false read-only The finding verified date
» verifiedBy string false read-only The username of the user that verified the finding
» verifiedById integer(int32) false read-only The user ID of the user that verified the finding
» qualityAssured string(date-time) false read-only The finding quality assured date
» qualityAssuredBy string false read-only The username of the user that quality assured the finding
» qualityAssuredById integer(int32) false read-only The user ID of the user that quality assured the finding
» published string(date-time) false read-only The finding published date
» publishedBy string false read-only The username of the user that published the finding
» publishedById integer(int32) false read-only The user ID of the user that published the finding
» rejected string(date-time) false read-only The finding rejected date
» rejectedBy string false read-only The username of the user that rejected the finding
» rejectedById integer(int32) false read-only The user ID of the user that rejected the finding
» recreation string false none The recreation
» alternativeRecreation string false none The alternate recreation
» impact string false none The impact
» sans25 integer(int32) false read-only SANS 25 classification of the entry.
» owasp2004 [integer] false read-only An array of OWASP Top 10 2004 classifications of the entry.
» owasp2007 [integer] false read-only An array of OWASP Top 10 2007 classifications of the entry.
» owasp2010 [integer] false read-only An array of OWASP Top 10 2010 classifications of the entry.
» owasp2013 [integer] false read-only An array of OWASP Top 10 2013 classifications of the entry.
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» owasp2021 [integer] false read-only The OWASP 2021 scores
» capec [integer] false read-only CAPEC classification of the entry.
» assetId integer(int32) true none The asset id
» assetName string false read-only The asset name
» potential boolean false none The finding potential. Set to true when potential false positive
» softwareComponent string false read-only The software component
» cyrating number(double) false read-only The cyrating
» cyratingDelta number(double) false read-only The cyrating delta
» exploitProbability number(double) false read-only The exploit probability
» exploitProbabilityDelta number(double) false read-only The exploit probability delta
» cyratingUpdated string(date-time) false read-only The cyrating updated date
» cyratingLastSeen string(date-time) false read-only The cyrating last seen date
» seenLastScan boolean false read-only Set to true if finding was seen in last scan
» watching boolean false read-only Whether the current user is watching this finding
» age integer(int32) false read-only The finding's age in days since creation
» assetGroupIds [integer] false none The asset group ids
» sentTo [string] false read-only A list of e-mail addresses that this finding has been sent to
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» bugTraq [integer] false read-only An array of Bugtraq reference IDs.
» secureCodeWarrior SecureCodeWarrior false read-only The secure code warrior information on the vulnerability description and training
»» name string false none The name of the entry.
»» description string false none Description of the entry.
»» url string false none none
» farsight Farsight false read-only The farsight concists in additional information on risk such as likelihood, threat activity
»» risk Farsight.Risk false none none
»»» score number(float) false none none
»»» delta number(float) false none none
»» updated string(date-time) false none The timestamp when the entry was updated.
»» lastThreatActivity string(date-time) false none none
» matches [BaseMatch] false read-only The match list
»» type string true none none
»» service Service false none none
»»» name string true none The name of the entry.
»»» scheme string false none none
»»» port integer(int32) false none none
»»» protocol string true none none
»»» virtualHost string false none none
»» patternUuid string false none none
» classifications Classification.Classifications false read-only The classifications such as CAPEC, OWASP20XX
»» sans25 integer(int32) false none SANS 25 classification of the entry.
»» capec [integer] false none CAPEC classification of the entry.
»» owasp2004 [integer] false none An array of OWASP Top 10 2004 classifications of the entry.
»» owasp2007 [integer] false none An array of OWASP Top 10 2007 classifications of the entry.
»» owasp2010 [integer] false none An array of OWASP Top 10 2010 classifications of the entry.
»» owasp2013 [integer] false none An array of OWASP Top 10 2013 classifications of the entry.
»» owasp2017 [integer] false none An array of OWASP Top 10 2017 classifications of the entry.
»» owasp2021 [integer] false none none
» ports [Port] false read-only Ports information on the vulnerability description
»» name string false none The name of the entry.
»» port integer(int32) false none none
»» protocol string false none none

Enumerated Values

Property Value
cvssSeverity RECOMMENDATION
cvssSeverity LOW
cvssSeverity MEDIUM
cvssSeverity HIGH
cvssSeverity CRITICAL
cvssV2Severity RECOMMENDATION
cvssV2Severity LOW
cvssV2Severity MEDIUM
cvssV2Severity HIGH
cvssV2Severity CRITICAL
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE
status TO_REVIEW
status TO_VERIFY
status TO_QA
status TO_PUBLISH
status REJECTED
status PRESENT
status ACCEPTED
status FALSE_POSITIVE
status PENDING_VERIFICATION
status FIXED
status IRREPRODUCIBLE
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC
protocol TCP
protocol UDP
protocol TCP
protocol UDP

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a finding

# You can also use wget
curl -X POST \
/opi/rest/findings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings

Body parameter

{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Finding true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete one or several findings

# You can also use wget
curl -X DELETE \
/opi/rest/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update one or several findings

# You can also use wget
curl -X PATCH \
/opi/rest/findings \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /findings

Body parameter

{
  "customerId": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "matchIds": [
    0
  ],
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "assetId": 0,
  "potential": true,
  "assetGroupIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body Finding true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/findings/{findingId}/matches/{matchId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/matches/{matchId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/matches/{matchId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/findings/{findingId}/matches/{matchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/findings/{findingId}/matches/{matchId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/findings/{findingId}/matches/{matchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /findings/{findingId}/matches/{matchId}

Name In Type Required Description
findingId path integer(int32) true none
matchId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/findings/{findingId}/matches/{matchId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/matches/{matchId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/matches/{matchId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/findings/{findingId}/matches/{matchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/findings/{findingId}/matches/{matchId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/findings/{findingId}/matches/{matchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /findings/{findingId}/matches/{matchId}

Name In Type Required Description
findingId path integer(int32) true none
matchId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get the token for downloading an attachment for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/attachments/{attachmentId}/download \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/attachments/{attachmentId}/download',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/attachments/{attachmentId}/download',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/attachments/{attachmentId}/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/attachments/{attachmentId}/download', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/attachments/{attachmentId}/download',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/attachments/{attachmentId}/download

Parameters

Name In Type Required Description
findingId path integer(int32) true none
attachmentId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Send finding as email

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/send \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/send',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "emailAddresses": [
    "string"
  ],
  "comment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/send',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/send", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/send', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/send',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/send

Body parameter

{
  "emailAddresses": [
    "string"
  ],
  "comment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body FindingExportAsEmail true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the attachments for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/attachments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/attachments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/attachments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/attachments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/attachments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/attachments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/attachments

Parameters

Name In Type Required Description
findingId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "findingId": 0,
    "type": "OTHER",
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Attachment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» findingId integer(int32) false read-only none
» type string false read-only none
» name string false read-only The name of the entry.

Enumerated Values

Property Value
type OTHER
type IMAGE
type TEXT
type VIDEO
type ARCHIVE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add an attachment for a finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/attachments \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/attachments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "type": "OTHER",
  "file": {
    "type": "string",
    "parameters": {
      "property1": "string",
      "property2": "string"
    },
    "fileName": "string",
    "creationDate": "2019-08-24T14:15:22Z",
    "modificationDate": "2019-08-24T14:15:22Z",
    "readDate": "2019-08-24T14:15:22Z",
    "size": 0,
    "name": "string"
  }
}';
const headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/attachments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/attachments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/attachments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/attachments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/attachments

Body parameter

name: string
type: OTHER
file:
  type: string
  parameters:
    property1: string
    property2: string
  fileName: string
  creationDate: 2019-08-24T14:15:22Z
  modificationDate: 2019-08-24T14:15:22Z
  readDate: 2019-08-24T14:15:22Z
  size: 0
  name: string

Parameters

Name In Type Required Description
findingId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body object false none
» name body string false none
» type body string false none
» file body FormDataContentDisposition false none
»» type body string false none
»» parameters body object false none
»»» additionalProperties body string false none
»» fileName body string false none
»» creationDate body string(date-time) false none
»» modificationDate body string(date-time) false none
»» readDate body string(date-time) false none
»» size body integer(int64) false none
»» name body string false The name of the entry.

Enumerated Values

Parameter Value
» type OTHER
» type IMAGE
» type TEXT
» type VIDEO
» type ARCHIVE

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the comments for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/comments

Parameters

Name In Type Required Description
findingId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "parentId": 0,
    "comment": "string",
    "entityType": "FINDING",
    "entityId": 0,
    "supportStatus": "NOT_APPLICABLE",
    "authorIsStaff": true,
    "deleted": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Comment] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» parentId integer(int32) false none The ID of the parent entry.
» comment string false none The content of the comment
» entityType string false none The type of object this comment is made for
» entityId integer(int32) false none The ID of the object this comment is made for
» supportStatus string false none Current support status of the comment
» authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
» deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Add a comment for a finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/comments

Body parameter

{
  "customerId": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "deleted": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Comment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the exploits for a finding

# You can also use wget
curl -X GET \
/opi/rest/findings/{findingId}/exploits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/exploits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/exploits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/{findingId}/exploits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/{findingId}/exploits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/{findingId}/exploits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/{findingId}/exploits

Parameters

Name In Type Required Description
findingId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "source": "Unknown",
    "cve": "string",
    "name": "string",
    "created": "2019-08-24T14:15:22Z",
    "pack": "string",
    "checkId": 0,
    "url": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Exploit] false none none
» id integer(int64) false read-only The ID of the entry.
» source string false read-only none
» cve string false read-only none
» name string false read-only The name of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» pack string false read-only none
» checkId integer(int64) false read-only none
» url string false read-only none

Enumerated Values

Property Value
source Unknown
source Core Security
source Immunity
source Exploit Database
source DSquare Security
source Contagio
source Metasploit
source SAINT
source Security Focus
source Snort
source Farsight

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of deltas

# You can also use wget
curl -X GET \
/opi/rest/findings/delta \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/delta',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/delta',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/delta", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/delta', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/delta',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/delta

Parameters

Name In Type Required Description
from query string(date-time) false none
to query string(date-time) false none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "firstSeen": 0,
    "lastSeen": 0,
    "unchanged": 0,
    "asset": {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "name": "string",
      "source": [
        "SCOUT"
      ],
      "assetIdentifierIds": [
        0
      ],
      "assetIdentifierTypes": [
        "IP"
      ],
      "dockerImageOs": "string",
      "activeSubscriptionTypes": [
        "DAST"
      ],
      "uuid": "string",
      "firstScanId": 0,
      "lastScanId": 0,
      "compliant": "COMPLIANT",
      "cvssV2EnvironmentalVector": "string",
      "cvssV3EnvironmentalVector": "string",
      "dockerImageProperties": {
        "type": "IP"
      },
      "tags": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "key": "string",
          "value": "string",
          "inherited": true,
          "count": 0
        }
      ],
      "assetIdentifiers": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "name": "string",
          "presentableName": "string",
          "type": "IP",
          "firstSeen": "2019-08-24T14:15:22Z",
          "lastSeen": "2019-08-24T14:15:22Z",
          "scannerId": 0,
          "scannerName": "string",
          "ownership": 0,
          "customOwnership": 100,
          "firstScanId": 0,
          "lastScanId": 0,
          "source": [
            "SCOUT"
          ],
          "links": [
            0
          ],
          "assetIds": [
            0
          ],
          "assetNames": [
            "string"
          ],
          "accountIds": [
            0
          ],
          "os": "string",
          "tags": [
            {
              "id": 0,
              "customerId": 0,
              "created": "2019-08-24T14:15:22Z",
              "updated": "2019-08-24T14:15:22Z",
              "createdBy": "string",
              "updatedBy": "string",
              "createdById": 0,
              "updatedById": 0,
              "key": "string",
              "value": "string",
              "inherited": true,
              "count": 0
            }
          ],
          "properties": {
            "type": "IP"
          }
        }
      ],
      "assetGroups": [
        {
          "id": 0,
          "name": "string"
        }
      ]
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [FindingDelta] false none none
» firstSeen integer(int32) false read-only Timestamp when the entry was seen for the first time.
» lastSeen integer(int32) false read-only Timestamp when the entry was seen last time.
» unchanged integer(int32) false read-only none
» asset Asset false read-only none
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» name string true none The name of the entry.
»» source [string] true none The asset sources
»» assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
»» assetIdentifierTypes [string] false read-only The asset identifier types (deprecated)
»» dockerImageOs string false read-only The docker image operating system name
»» activeSubscriptionTypes [string] false read-only The asset's active subscription types
»» uuid string false read-only The UUID of the entry.
»» firstScanId integer(int32) false read-only The id of the first scan performed on the asset
»» lastScanId integer(int32) false read-only The id of last scan performed on the asset
»» compliant string false read-only The asset compliance status
»» cvssV2EnvironmentalVector string false none The CVSS V2 environmental vector
»» cvssV3EnvironmentalVector string false none The CVSS V3 environmental vector
»» dockerImageProperties BaseProperties false none The asset base properties
»»» type string true none none
»» tags [Tag] false read-only The tags
»»» id integer(int32) false read-only The ID of the entry.
»»» customerId integer(int32) false none The ID of the customer owning the entry.
»»» created string(date-time) false read-only The timestamp when the entry was created.
»»» updated string(date-time) false read-only The timestamp when the entry was updated.
»»» createdBy string false read-only The name of the user who created the entry.
»»» updatedBy string false read-only The name of the user who updated the entry.
»»» createdById integer(int32) false read-only The ID of the user who created the entry.
»»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»»» key string true none none
»»» value string false none none
»»» inherited boolean false read-only none
»»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
»» assetIdentifiers [AssetIdentifier] false none The asset links
»»» id integer(int32) false read-only The ID of the entry.
»»» customerId integer(int32) false none The ID of the customer owning the entry.
»»» created string(date-time) false read-only The timestamp when the entry was created.
»»» updated string(date-time) false read-only The timestamp when the entry was updated.
»»» createdBy string false read-only The name of the user who created the entry.
»»» updatedBy string false read-only The name of the user who updated the entry.
»»» createdById integer(int32) false read-only The ID of the user who created the entry.
»»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»»» name string true none The name of the entry.
»»» presentableName string false none none
»»» type string true none none
»»» firstSeen string(date-time) false none Timestamp when the entry was seen for the first time.
»»» lastSeen string(date-time) false none Timestamp when the entry was seen last time.
»»» scannerId integer(int32) false none none
»»» scannerName string false read-only none
»»» ownership integer(int32) false read-only none
»»» customOwnership integer(int32) false none none
»»» firstScanId integer(int32) false read-only none
»»» lastScanId integer(int32) false read-only none
»»» source [string] true none none
»»» links [integer] false read-only none
»»» assetIds [integer] false read-only none
»»» assetNames [string] false read-only none
»»» accountIds [integer] false none none
»»» os string false none none
»»» tags [Tag] false read-only [The tags]
»»» properties BaseProperties false none The asset base properties
»» assetGroups [Asset.AssetGroup] false read-only Information of all asset groups the asset is linked to
»»» id integer(int32) false none The ID of the entry.
»»» name string false none The name of the entry.

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a delta summary

# You can also use wget
curl -X GET \
/opi/rest/findings/delta-summary \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/delta-summary',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/delta-summary',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/delta-summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/delta-summary', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/delta-summary',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/delta-summary

Parameters

Name In Type Required Description
from query string(date-time) false none
to query string(date-time) false none
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

{
  "firstSeen": 0,
  "lastSeen": 0,
  "unchanged": 0,
  "asset": {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "source": [
      "SCOUT"
    ],
    "assetIdentifierIds": [
      0
    ],
    "assetIdentifierTypes": [
      "IP"
    ],
    "dockerImageOs": "string",
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "uuid": "string",
    "firstScanId": 0,
    "lastScanId": 0,
    "compliant": "COMPLIANT",
    "cvssV2EnvironmentalVector": "string",
    "cvssV3EnvironmentalVector": "string",
    "dockerImageProperties": {
      "type": "IP"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "assetIdentifiers": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "name": "string",
        "presentableName": "string",
        "type": "IP",
        "firstSeen": "2019-08-24T14:15:22Z",
        "lastSeen": "2019-08-24T14:15:22Z",
        "scannerId": 0,
        "scannerName": "string",
        "ownership": 0,
        "customOwnership": 100,
        "firstScanId": 0,
        "lastScanId": 0,
        "source": [
          "SCOUT"
        ],
        "links": [
          0
        ],
        "assetIds": [
          0
        ],
        "assetNames": [
          "string"
        ],
        "accountIds": [
          0
        ],
        "os": "string",
        "tags": [
          {
            "id": 0,
            "customerId": 0,
            "created": "2019-08-24T14:15:22Z",
            "updated": "2019-08-24T14:15:22Z",
            "createdBy": "string",
            "updatedBy": "string",
            "createdById": 0,
            "updatedById": 0,
            "key": "string",
            "value": "string",
            "inherited": true,
            "count": 0
          }
        ],
        "properties": {
          "type": "IP"
        }
      }
    ],
    "assetGroups": [
      {
        "id": 0,
        "name": "string"
      }
    ]
  }
}

Responses

Status Meaning Description Schema
default Default default response FindingDelta

Get a list of solutions

# You can also use wget
curl -X GET \
/opi/rest/findings/solutions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/solutions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/solutions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/findings/solutions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/findings/solutions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/findings/solutions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /findings/solutions

Parameters

Name In Type Required Description
assetIds query string false none
assetGroupIds query string false none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "solutionUuid": "string",
    "solutionType": "NOT_CLASSIFIED",
    "solution": "string",
    "solutionProduct": "string",
    "solutionTitle": "string",
    "riskCount": 0,
    "assetCount": 0,
    "severityCount": {
      "critical": 0,
      "high": 0,
      "medium": 0,
      "low": 0,
      "recommendation": 0
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [FindingSolution] false none none
» solutionUuid string false read-only none
» solutionType string false read-only none
» solution string false read-only none
» solutionProduct string false read-only none
» solutionTitle string false read-only none
» riskCount integer(int32) false read-only none
» assetCount integer(int32) false read-only none
» severityCount FindingSolution.SeverityCount false read-only none
»» critical integer(int32) false none none
»» high integer(int32) false none none
»» medium integer(int32) false none none
»» low integer(int32) false none none
»» recommendation integer(int32) false none none

Enumerated Values

Property Value
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Log the request to Secure Code Warrior

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/secure-code-warrior \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/secure-code-warrior',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/secure-code-warrior',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/secure-code-warrior", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/secure-code-warrior', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/secure-code-warrior',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/secure-code-warrior

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark finding as false positive

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/mark-false-positive \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/mark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "falsePositiveComment": "string",
  "sendInfo": true,
  "clarificationRequestComment": "string",
  "sendBlueprint": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/mark-false-positive',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/mark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/mark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/mark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/mark-false-positive

Body parameter

{
  "falsePositiveComment": "string",
  "sendInfo": true,
  "clarificationRequestComment": "string",
  "sendBlueprint": true
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body FindingFalsePositive true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark one or several finding(s) as false positives

# You can also use wget
curl -X POST \
/opi/rest/findings/mark-false-positive \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/mark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "falsePositiveComment": "string",
  "sendInfo": true,
  "clarificationRequestComment": "string",
  "sendBlueprint": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/mark-false-positive',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/mark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/mark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/mark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/mark-false-positive

Body parameter

{
  "falsePositiveComment": "string",
  "sendInfo": true,
  "clarificationRequestComment": "string",
  "sendBlueprint": true
}

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body FindingFalsePositive true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark finding as fixed

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/mark-fixed \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/mark-fixed',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/mark-fixed',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/mark-fixed", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/mark-fixed', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/mark-fixed',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/mark-fixed

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark one or several findings as fixed

# You can also use wget
curl -X POST \
/opi/rest/findings/mark-fixed \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/mark-fixed',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/mark-fixed',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/mark-fixed", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/mark-fixed', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/mark-fixed',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/mark-fixed

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark finding as irreproducible

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/mark-irreproducible \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/mark-irreproducible',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/mark-irreproducible',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/mark-irreproducible", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/mark-irreproducible', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/mark-irreproducible',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/mark-irreproducible

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark one or several findings as irreproducible

# You can also use wget
curl -X POST \
/opi/rest/findings/mark-irreproducible \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/mark-irreproducible',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/mark-irreproducible',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/mark-irreproducible", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/mark-irreproducible', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/mark-irreproducible',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/mark-irreproducible

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/findings/{findingId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/findings/{findingId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/findings/{findingId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/findings/{findingId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /findings/{findingId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags to one or several findings

# You can also use wget
curl -X PUT \
/opi/rest/findings/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/findings/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/findings/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/findings/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /findings/tags

Body parameter

[]

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Publish finding (set as present)

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/publish \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/publish',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/publish',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/publish", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/publish', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/publish',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/publish

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Set finding as rejected

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/reject \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/reject',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/reject',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/reject", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/reject', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/reject',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/reject

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Request clarification for a finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/request-clarification \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/request-clarification',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "clarificationRequestComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/request-clarification',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/request-clarification", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/request-clarification', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/request-clarification',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/request-clarification

Body parameter

{
  "clarificationRequestComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body FindingClarificationRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark finding as pending verification

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/request-verification \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/request-verification',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "verificationRequestComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/request-verification',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/request-verification", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/request-verification', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/request-verification',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/request-verification

Body parameter

{
  "verificationRequestComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body FindingVerificationRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark one or several findings as pending for verification

# You can also use wget
curl -X POST \
/opi/rest/findings/request-verification \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/request-verification',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "verificationRequestComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/request-verification',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/request-verification", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/request-verification', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/request-verification',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/request-verification

Body parameter

{
  "verificationRequestComment": "string"
}

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body FindingVerificationRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Reset status of finding to 'PRESENT'

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/reset-status \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/reset-status',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/reset-status',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/reset-status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/reset-status', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/reset-status',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/reset-status

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Reset status on one or several findings to 'PRESENT

# You can also use wget
curl -X POST \
/opi/rest/findings/reset-status \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/reset-status',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/reset-status',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/reset-status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/reset-status', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/reset-status',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/reset-status

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Accept finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/accept \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/accept',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/accept',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/accept", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/accept', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/accept',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/accept

Body parameter

{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int32) true none
body body FindingAccept true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Accept one or several findings

# You can also use wget
curl -X POST \
/opi/rest/findings/accept \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/accept',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/accept',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/accept", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/accept', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/accept',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/accept

Body parameter

{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body FindingAccept true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Set finding as quality assured

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/quality-assure \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/quality-assure',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/quality-assure',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/quality-assure", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/quality-assure', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/quality-assure',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/quality-assure

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Set finding as reviewed and transition to be verified

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/review \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/review',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/review',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/review", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/review', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/review',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/review

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Set finding as verified and transitioned to be quality assured

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/verify \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/verify',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/verify',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/verify", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/verify', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/verify',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/verify

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Unwatch a finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/unwatch \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/unwatch',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/unwatch',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/unwatch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/unwatch', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/unwatch',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/unwatch

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Unwatch one or several findings

# You can also use wget
curl -X POST \
/opi/rest/findings/unwatch \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/unwatch',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/unwatch',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/unwatch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/unwatch', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/unwatch',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/unwatch

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Watch a finding

# You can also use wget
curl -X POST \
/opi/rest/findings/{findingId}/watch \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/{findingId}/watch',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/{findingId}/watch',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/{findingId}/watch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/{findingId}/watch', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/{findingId}/watch',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/{findingId}/watch

Parameters

Name In Type Required Description
findingId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Watch one or several findings

# You can also use wget
curl -X POST \
/opi/rest/findings/watch \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/findings/watch',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/findings/watch',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/findings/watch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/findings/watch', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/findings/watch',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /findings/watch

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Globals

Get global settings

# You can also use wget
curl -X GET \
/opi/rest/globals \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/globals',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/globals',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/globals", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/globals', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/globals',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /globals

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "awsAccountId": "string",
  "appliance": true,
  "awsAccessKeyAllowRemote": true
}

Responses

Status Meaning Description Schema
default Default default response Globals

Get a list of timezones

# You can also use wget
curl -X GET \
/opi/rest/globals/timezones \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/globals/timezones',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/globals/timezones',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/globals/timezones", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/globals/timezones', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/globals/timezones',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /globals/timezones

Parameters

Name In Type Required Description
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order

The above code returns response like this:

default Response

[
  {
    "name": "string",
    "gmtOffset": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Timezone] false none none
» name string true none The name of the entry.
» gmtOffset number(double) true none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Integrations

Authorization

# You can also use wget
curl -X GET \
/opi/rest/integrations/authorization?code=string \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/authorization',
  method: 'get',
  data: '?code=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/authorization?code=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/integrations/authorization", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/integrations/authorization', params={
  'code': 'string'
}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/integrations/authorization',
  params: {
  'code' => 'string'
}, headers: headers

p JSON.parse(result)

GET /integrations/authorization

Parameters

Name In Type Required Description
code query string true none
error query string false none
error_description query string false none
state query string false none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Authorize an integration based on OAuth 2.0

# You can also use wget
curl -X GET \
/opi/rest/integrations/{integrationId}/authorize \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}/authorize',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}/authorize',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/integrations/{integrationId}/authorize", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/integrations/{integrationId}/authorize', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/integrations/{integrationId}/authorize',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /integrations/{integrationId}/authorize

Parameters

Name In Type Required Description
integrationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get an integration

# You can also use wget
curl -X GET \
/opi/rest/integrations/{integrationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/integrations/{integrationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/integrations/{integrationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/integrations/{integrationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /integrations/{integrationId}

Parameters

Name In Type Required Description
integrationId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "type": "OBJECT_STORAGE",
  "verified": "2019-08-24T14:15:22Z",
  "verifiedBy": "string",
  "verifiedById": 0,
  "verifyStatus": true,
  "configuration": {
    "type": "OBJECT_STORAGE"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Integration

Delete an integration

# You can also use wget
curl -X DELETE \
/opi/rest/integrations/{integrationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/integrations/{integrationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/integrations/{integrationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/integrations/{integrationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /integrations/{integrationId}

Parameters

Name In Type Required Description
integrationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an integration

# You can also use wget
curl -X PATCH \
/opi/rest/integrations/{integrationId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "configuration": {
    "type": "OBJECT_STORAGE"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/integrations/{integrationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/integrations/{integrationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/integrations/{integrationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /integrations/{integrationId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "configuration": {
    "type": "OBJECT_STORAGE"
  }
}

Parameters

Name In Type Required Description
integrationId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Integration true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/integrations/{integrationId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/integrations/{integrationId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/integrations/{integrationId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/integrations/{integrationId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /integrations/{integrationId}/tags/{tagId}

Name In Type Required Description
integrationId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/integrations/{integrationId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/integrations/{integrationId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/integrations/{integrationId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/integrations/{integrationId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /integrations/{integrationId}/tags/{tagId}

Name In Type Required Description
integrationId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of integrations

# You can also use wget
curl -X GET \
/opi/rest/integrations \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/integrations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/integrations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/integrations',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /integrations

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "type": "OBJECT_STORAGE",
    "verified": "2019-08-24T14:15:22Z",
    "verifiedBy": "string",
    "verifiedById": 0,
    "verifyStatus": true,
    "configuration": {
      "type": "OBJECT_STORAGE"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Integration] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» type string false read-only none
» verified string(date-time) false read-only none
» verifiedBy string false read-only none
» verifiedById integer(int32) false read-only none
» verifyStatus boolean false read-only none
» configuration BaseIntegrationConfiguration true none none
»» type string true none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
type OBJECT_STORAGE
type AGENT
type ENCRYPTION_SERVICE
type EMAIL
type WEBHOOK
type LOG
type SYSLOG
type SNMP
type CYBERARK
type DELINEA
type NOTIFICATION
type OBJECT_STORAGE
type AGENT
type ENCRYPTION_SERVICE
type EMAIL
type WEBHOOK
type LOG
type SYSLOG
type SNMP
type CYBERARK
type DELINEA
type NOTIFICATION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create an integration

# You can also use wget
curl -X POST \
/opi/rest/integrations \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "configuration": {
    "type": "OBJECT_STORAGE"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/integrations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/integrations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/integrations',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /integrations

Body parameter

{
  "customerId": 0,
  "name": "string",
  "configuration": {
    "type": "OBJECT_STORAGE"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Integration true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/integrations \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/integrations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/integrations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/integrations',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /integrations

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/integrations/{integrationId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/integrations/{integrationId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/integrations/{integrationId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/integrations/{integrationId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /integrations/{integrationId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
integrationId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Verify the integration connectivity

# You can also use wget
curl -X POST \
/opi/rest/integrations/{integrationId}/verify \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/integrations/{integrationId}/verify',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/integrations/{integrationId}/verify',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/integrations/{integrationId}/verify", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/integrations/{integrationId}/verify', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/integrations/{integrationId}/verify',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /integrations/{integrationId}/verify

Parameters

Name In Type Required Description
integrationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Managed report groups

Get a managed report group (Deprecated: 2019-12-11)

# You can also use wget
curl -X GET \
/opi/rest/managed-report-groups/{managedReportGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-report-groups/{managedReportGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-report-groups/{managedReportGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-report-groups/{managedReportGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-report-groups/{managedReportGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-report-groups/{managedReportGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-report-groups/{managedReportGroupId}

Parameters

Name In Type Required Description
managedReportGroupId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "userId": 0,
  "name": "string",
  "parentId": 0,
  "updated": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "count": 0
}

Responses

Status Meaning Description Schema
default Default default response ManagedReportGroup

Get a list of managed report groups (Deprecated: 2019-12-11)

# You can also use wget
curl -X GET \
/opi/rest/managed-report-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-report-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-report-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-report-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-report-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-report-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-report-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "userId": 0,
    "name": "string",
    "parentId": 0,
    "updated": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "count": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ManagedReportGroup] false none none
» id integer(int64) false read-only The ID of the entry.
» userId integer(int64) false read-only none
» name string true none The name of the entry.
» parentId integer(int64) false none The ID of the parent entry.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» created string(date-time) false read-only The timestamp when the entry was created.
» count integer(int64) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count (Deprecated: 2019-12-11)

# You can also use wget
curl -X HEAD \
/opi/rest/managed-report-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-report-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-report-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/managed-report-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/managed-report-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/managed-report-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /managed-report-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Managed reports

Get a managed report

# You can also use wget
curl -X GET \
/opi/rest/managed-reports/{managedReportId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-reports/{managedReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-reports/{managedReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-reports/{managedReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-reports/{managedReportId}

Parameters

Name In Type Required Description
managedReportId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "size": 0,
  "lastDownloaded": "2019-08-24T14:15:22Z",
  "lastDownloadedBy": "string",
  "uuid": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ManagedReport

Delete a managed report

# You can also use wget
curl -X DELETE \
/opi/rest/managed-reports/{managedReportId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/managed-reports/{managedReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/managed-reports/{managedReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/managed-reports/{managedReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /managed-reports/{managedReportId}

Parameters

Name In Type Required Description
managedReportId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a managed report

# You can also use wget
curl -X PATCH \
/opi/rest/managed-reports/{managedReportId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/managed-reports/{managedReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/managed-reports/{managedReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/managed-reports/{managedReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /managed-reports/{managedReportId}

Body parameter

{
  "customerId": 0,
  "name": "string"
}

Parameters

Name In Type Required Description
managedReportId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ManagedReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/managed-reports/{managedReportId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/managed-reports/{managedReportId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/managed-reports/{managedReportId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /managed-reports/{managedReportId}/tags/{tagId}

Name In Type Required Description
managedReportId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/managed-reports/{managedReportId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/managed-reports/{managedReportId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/managed-reports/{managedReportId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/managed-reports/{managedReportId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /managed-reports/{managedReportId}/tags/{tagId}

Name In Type Required Description
managedReportId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get the token for downloading a managed report

# You can also use wget
curl -X GET \
/opi/rest/managed-reports/{managedReportId}/download \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}/download',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}/download',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-reports/{managedReportId}/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-reports/{managedReportId}/download', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-reports/{managedReportId}/download',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-reports/{managedReportId}/download

Parameters

Name In Type Required Description
managedReportId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of managed reports

# You can also use wget
curl -X GET \
/opi/rest/managed-reports \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-reports

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "size": 0,
    "lastDownloaded": "2019-08-24T14:15:22Z",
    "lastDownloadedBy": "string",
    "uuid": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ManagedReport] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» size integer(int32) false read-only none
» lastDownloaded string(date-time) false read-only none
» lastDownloadedBy string false read-only none
» uuid string false read-only The UUID of the entry.
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a managed report

# You can also use wget
curl -X POST \
/opi/rest/managed-reports \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "file": {
    "type": "string",
    "parameters": {
      "property1": "string",
      "property2": "string"
    },
    "fileName": "string",
    "creationDate": "2019-08-24T14:15:22Z",
    "modificationDate": "2019-08-24T14:15:22Z",
    "readDate": "2019-08-24T14:15:22Z",
    "size": 0,
    "name": "string"
  }
}';
const headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/managed-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/managed-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/managed-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /managed-reports

Body parameter

name: string
file:
  type: string
  parameters:
    property1: string
    property2: string
  fileName: string
  creationDate: 2019-08-24T14:15:22Z
  modificationDate: 2019-08-24T14:15:22Z
  readDate: 2019-08-24T14:15:22Z
  size: 0
  name: string

Parameters

Name In Type Required Description
body body object false none
» name body string false none
» file body FormDataContentDisposition false none
»» type body string false none
»» parameters body object false none
»»» additionalProperties body string false none
»» fileName body string false none
»» creationDate body string(date-time) false none
»» modificationDate body string(date-time) false none
»» readDate body string(date-time) false none
»» size body integer(int64) false none
»» name body string false The name of the entry.

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/managed-reports \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/managed-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/managed-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/managed-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /managed-reports

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of tags for managed reports

# You can also use wget
curl -X GET \
/opi/rest/managed-reports/tags \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/tags',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/tags',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/managed-reports/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/managed-reports/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/managed-reports/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /managed-reports/tags

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "key": "string",
    "value": "string",
    "inherited": true,
    "count": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Tag] false none [The tags]
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» key string true none none
» value string false none none
» inherited boolean false read-only none
» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/managed-reports/{managedReportId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/{managedReportId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/{managedReportId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/managed-reports/{managedReportId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/managed-reports/{managedReportId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/managed-reports/{managedReportId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /managed-reports/{managedReportId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
managedReportId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Upload a managed report from HIAB

# You can also use wget
curl -X POST \
/opi/rest/managed-reports/upload \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/managed-reports/upload',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "key": "string",
  "name": "string",
  "tags": "string",
  "file": {
    "type": "string",
    "parameters": {
      "property1": "string",
      "property2": "string"
    },
    "fileName": "string",
    "creationDate": "2019-08-24T14:15:22Z",
    "modificationDate": "2019-08-24T14:15:22Z",
    "readDate": "2019-08-24T14:15:22Z",
    "size": 0,
    "name": "string"
  }
}';
const headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/managed-reports/upload',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/managed-reports/upload", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/managed-reports/upload', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/managed-reports/upload',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /managed-reports/upload

Body parameter

key: string
name: string
tags: string
file:
  type: string
  parameters:
    property1: string
    property2: string
  fileName: string
  creationDate: 2019-08-24T14:15:22Z
  modificationDate: 2019-08-24T14:15:22Z
  readDate: 2019-08-24T14:15:22Z
  size: 0
  name: string

Parameters

Name In Type Required Description
body body object false none
» key body string false none
» name body string false none
» tags body string false none
» file body FormDataContentDisposition false none
»» type body string false none
»» parameters body object false none
»»» additionalProperties body string false none
»» fileName body string false none
»» creationDate body string(date-time) false none
»» modificationDate body string(date-time) false none
»» readDate body string(date-time) false none
»» size body integer(int64) false none
»» name body string false The name of the entry.

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Matches

Get a match

# You can also use wget
curl -X GET \
/opi/rest/matches/{matchId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches/{matchId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches/{matchId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/matches/{matchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/matches/{matchId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/matches/{matchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /matches/{matchId}

Parameters

Name In Type Required Description
matchId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "findingIds": [
    0
  ],
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST",
  "match": {
    "type": "WAS",
    "service": {
      "name": "string",
      "scheme": "string",
      "port": 0,
      "protocol": "TCP",
      "virtualHost": "string"
    },
    "patternUuid": "string"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Match

Delete a match

# You can also use wget
curl -X DELETE \
/opi/rest/matches/{matchId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches/{matchId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches/{matchId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/matches/{matchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/matches/{matchId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/matches/{matchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /matches/{matchId}

Parameters

Name In Type Required Description
matchId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a match

# You can also use wget
curl -X PATCH \
/opi/rest/matches/{matchId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches/{matchId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches/{matchId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/matches/{matchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/matches/{matchId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/matches/{matchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /matches/{matchId}

Body parameter

{
  "customerId": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST"
}

Parameters

Name In Type Required Description
matchId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Match true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of matches

# You can also use wget
curl -X GET \
/opi/rest/matches \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/matches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/matches', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/matches',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /matches

Matches are the most atomic elements composing findings. A match is an output from the scanner describing a state that has been detected on the scanned asset.

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "assetId": 0,
    "type": "WAS",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "firstScanId": 0,
    "lastScanId": 0,
    "findingIds": [
      0
    ],
    "source": [
      "SCOUT"
    ],
    "subscriptionType": "DAST",
    "match": {
      "type": "WAS",
      "service": {
        "name": "string",
        "scheme": "string",
        "port": 0,
        "protocol": "TCP",
        "virtualHost": "string"
      },
      "patternUuid": "string"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Match] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» assetId integer(int32) true none none
» type string true none none
» firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) true none Timestamp when the entry was seen last time.
» firstScanId integer(int32) false read-only none
» lastScanId integer(int32) false read-only none
» findingIds [integer] false read-only none
» source [string] true none none
» subscriptionType string false none none
» match BaseMatch false read-only The match list
»» type string true none none
»» service Service false none none
»»» name string true none The name of the entry.
»»» scheme string false none none
»»» port integer(int32) false none none
»»» protocol string true none none
»»» virtualHost string false none none
»» patternUuid string false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC
subscriptionType DAST
subscriptionType SCALE
subscriptionType SCOUT
subscriptionType SNAPSHOT
subscriptionType ASSURE
subscriptionType DAST_EXPERT
subscriptionType VERIFY
subscriptionType SWAT
subscriptionType CLOUDSEC
subscriptionType NETSEC
subscriptionType CONSUMPTION
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC
protocol TCP
protocol UDP

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a match

# You can also use wget
curl -X POST \
/opi/rest/matches \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/matches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/matches', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/matches',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /matches

Body parameter

{
  "customerId": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Match true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/matches \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/matches',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/matches',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/matches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/matches', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/matches',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /matches

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Notifications

Get a notification

# You can also use wget
curl -X GET \
/opi/rest/notifications/{notificationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/notifications/{notificationId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/notifications/{notificationId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/notifications/{notificationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/notifications/{notificationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/notifications/{notificationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /notifications/{notificationId}

Parameters

Name In Type Required Description
notificationId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "userId": 0,
  "subUserId": 0,
  "eventSubscriptionId": 0,
  "read": "2019-08-24T14:15:22Z",
  "content": {
    "subject": "string",
    "message": "string",
    "trigger": "SCHEDULE_CREATED",
    "entityType": "FINDING",
    "entityId": 0,
    "subEntityType": "COMMENT",
    "subEntityId": 0
  }
}

Responses

Status Meaning Description Schema
default Default default response Notification

Get a list of notifications

# You can also use wget
curl -X GET \
/opi/rest/notifications \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/notifications',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/notifications',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/notifications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/notifications', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/notifications',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /notifications

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "userId": 0,
    "subUserId": 0,
    "eventSubscriptionId": 0,
    "read": "2019-08-24T14:15:22Z",
    "content": {
      "subject": "string",
      "message": "string",
      "trigger": "SCHEDULE_CREATED",
      "entityType": "FINDING",
      "entityId": 0,
      "subEntityType": "COMMENT",
      "subEntityId": 0
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Notification] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» userId integer(int64) false none none
» subUserId integer(int64) false none none
» eventSubscriptionId integer(int32) false none none
» read string(date-time) false none none
» content Notification.Content false none none
»» subject string true none none
»» message string false none none
»» trigger string true none none
»» entityType string false none none
»» entityId integer(int32) false none none
»» subEntityType string false none none
»» subEntityId integer(int32) false none none

Enumerated Values

Property Value
trigger SCHEDULE_CREATED
trigger SCHEDULE_DELETED
trigger SCHEDULE_MODIFIED
trigger SCHEDULE_SCHEDULED
trigger CONFIGURATION_CREATED
trigger CONFIGURATION_DELETED
trigger CONFIGURATION_MODIFIED
trigger CONFIGURATION_STARTED
trigger CONFIGURATION_DONE
trigger SCAN_STARTED
trigger SCAN_STOPPED
trigger SCAN_DONE
trigger ASSET_NOT_RECENTLY_SEEN
trigger ASSET_SEEN
trigger ASSET_CREATED
trigger ASSET_DELETED
trigger ASSET_MODIFIED
trigger FINDING_SEEN
trigger FINDING_CREATED
trigger FINDING_MODIFIED
trigger FINDING_STATUS_TRANSITIONED
trigger FINDING_RISK_ACCEPTED_EXPIRATION
trigger WATCHED_FINDING_UPDATED
trigger USER_CREATED
trigger USER_DELETED
trigger USER_MODIFIED
trigger USER_LOGIN_ATTEMPT
trigger USER_PASSWORD_RESET
trigger ROLE_CREATED
trigger ROLE_DELETED
trigger ROLE_MODIFIED
trigger RESOURCE_GROUP_CREATED
trigger RESOURCE_GROUP_DELETED
trigger RESOURCE_GROUP_MODIFIED
trigger NEW_RELEASE_NOTES
trigger HIAB_SCANNER_MISSING
trigger HIAB_UPDATE_DONE
trigger HIAB_UPDATE_FAILED
trigger HIAB_BACKUP_DONE
trigger HIAB_BACKUP_FAILED
trigger HIAB_MAINTENANCE_PLAN_DONE
trigger HIAB_DISK_USAGE_HIGH
trigger HIAB_REBOOTED
trigger HIAB_REMOTE_SUPPORT
trigger OUTSCAN_CONSULTANCY
trigger CONSUMPTION_ABSOLUTE
trigger CONSUMPTION_RELATIVE
trigger WORKFLOW_CREATED
trigger WORKFLOW_DELETED
trigger WORKFLOW_MODIFIED
trigger WORKFLOW_STARTED
trigger WORKFLOW_DONE
trigger COMPLIANCE_CREATED
trigger COMPLIANCE_MODIFIED
trigger COMPLIANCE_RISK_EXCEPTION
trigger COMPLIANCE_RISK_EXCEPTION_EXPIRATION
trigger COMMENT_CREATED
trigger EXECUTIVE_SUMMARY_UPDATED
trigger ACTIVITY_FEED_UPDATED
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
subEntityType COMMENT
subEntityType ATTACHMENT
subEntityType ACTIVITY

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/notifications \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/notifications',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/notifications',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/notifications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/notifications', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/notifications',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /notifications

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Mark a notification as read

# You can also use wget
curl -X POST \
/opi/rest/notifications/{notificationId}/mark-as-read \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/notifications/{notificationId}/mark-as-read',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/notifications/{notificationId}/mark-as-read',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/notifications/{notificationId}/mark-as-read", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/notifications/{notificationId}/mark-as-read', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/notifications/{notificationId}/mark-as-read',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /notifications/{notificationId}/mark-as-read

Parameters

Name In Type Required Description
notificationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Mark a notification as unread

# You can also use wget
curl -X POST \
/opi/rest/notifications/{notificationId}/mark-as-unread \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/notifications/{notificationId}/mark-as-unread',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/notifications/{notificationId}/mark-as-unread',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/notifications/{notificationId}/mark-as-unread", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/notifications/{notificationId}/mark-as-unread', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/notifications/{notificationId}/mark-as-unread',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /notifications/{notificationId}/mark-as-unread

Parameters

Name In Type Required Description
notificationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Organizations

Get an organization

# You can also use wget
curl -X GET \
/opi/rest/organizations/{organizationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/organizations/{organizationId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/organizations/{organizationId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/organizations/{organizationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/organizations/{organizationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/organizations/{organizationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /organizations/{organizationId}

Parameters

Name In Type Required Description
organizationId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "uuid": "string",
  "name": "string"
}

Responses

Status Meaning Description Schema
default Default default response Organization

Get a list of organizations

# You can also use wget
curl -X GET \
/opi/rest/organizations \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/organizations',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/organizations',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/organizations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/organizations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/organizations',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /organizations

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "uuid": "string",
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Organization] false none none
» id integer(int64) false read-only The ID of the entry.
» uuid string false read-only The UUID of the entry.
» name string false read-only The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/organizations \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/organizations',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/organizations',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/organizations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/organizations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/organizations',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /organizations

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Outscan findings

Get the exploits for a finding

# You can also use wget
curl -X GET \
/opi/rest/outscan/findings/{findingId}/exploits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/findings/{findingId}/exploits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/findings/{findingId}/exploits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/findings/{findingId}/exploits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/findings/{findingId}/exploits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/findings/{findingId}/exploits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/findings/{findingId}/exploits

Parameters

Name In Type Required Description
findingId path integer(int64) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "source": "Unknown",
    "cve": "string",
    "name": "string",
    "created": "2019-08-24T14:15:22Z",
    "pack": "string",
    "checkId": 0,
    "url": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Exploit] false none none
» id integer(int64) false read-only The ID of the entry.
» source string false read-only none
» cve string false read-only none
» name string false read-only The name of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» pack string false read-only none
» checkId integer(int64) false read-only none
» url string false read-only none

Enumerated Values

Property Value
source Unknown
source Core Security
source Immunity
source Exploit Database
source DSquare Security
source Contagio
source Metasploit
source SAINT
source Security Focus
source Snort
source Farsight

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a finding by ID

# You can also use wget
curl -X GET \
/opi/rest/outscan/findings/{findingId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/findings/{findingId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/findings/{findingId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/findings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/findings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/findings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/findings/{findingId}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "scanJobId": 0,
  "scanLogId": 0,
  "scheduleId": 0,
  "templateId": 0,
  "cvssScore": 0,
  "cvssV3Score": 0,
  "cvssV3Severity": "RECOMMENDATION",
  "cvssV3Vector": "string",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "reportDate": "2019-08-24T14:15:22Z",
  "targetId": 0,
  "target": "string",
  "hostname": "string",
  "port": 0,
  "protocol": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "cve": "string",
  "vulnId": 0,
  "isNew": true,
  "previouslyDetected": true,
  "type": "string",
  "isPotentialFalsePositive": true,
  "productName": "string",
  "productUrl": "string",
  "solutionProduct": "string",
  "checkCreated": "2019-08-24T14:15:22Z",
  "hasExploits": true,
  "solution": "string",
  "businessCriticality": "LOW",
  "assetBusinessCriticality": "LOW",
  "solutionTitle": "string",
  "created": "2019-08-24T14:15:22Z",
  "cyrating": 0,
  "cyratingDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "exploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "assetExposed": true,
  "owasp2017": [
    0
  ],
  "isAccepted": true,
  "patchInformation": "string",
  "cvssVector": "string",
  "virtualHost": "string",
  "platform": "string",
  "bugTraq": [
    0
  ],
  "serviceName": "string",
  "riskLevel": "Initial",
  "solutionType": "Unspecified",
  "age": 0,
  "data": "string",
  "description": "string",
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "acceptExpires": "2019-08-24T14:15:22Z",
  "acceptedBy": "string",
  "acceptDate": "2019-08-24T14:15:22Z",
  "acceptComment": "string"
}

Responses

Status Meaning Description Schema
default Default default response OutscanFinding

Get a list of findings

# You can also use wget
curl -X GET \
/opi/rest/outscan/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/findings

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "scanJobId": 0,
    "scanLogId": 0,
    "scheduleId": 0,
    "templateId": 0,
    "cvssScore": 0,
    "cvssV3Score": 0,
    "cvssV3Severity": "RECOMMENDATION",
    "cvssV3Vector": "string",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "reportDate": "2019-08-24T14:15:22Z",
    "targetId": 0,
    "target": "string",
    "hostname": "string",
    "port": 0,
    "protocol": 0,
    "name": "string",
    "source": [
      "SCOUT"
    ],
    "cve": "string",
    "vulnId": 0,
    "isNew": true,
    "previouslyDetected": true,
    "type": "string",
    "isPotentialFalsePositive": true,
    "productName": "string",
    "productUrl": "string",
    "solutionProduct": "string",
    "checkCreated": "2019-08-24T14:15:22Z",
    "hasExploits": true,
    "solution": "string",
    "businessCriticality": "LOW",
    "assetBusinessCriticality": "LOW",
    "solutionTitle": "string",
    "created": "2019-08-24T14:15:22Z",
    "cyrating": 0,
    "cyratingDelta": 0,
    "cyratingUpdated": "2019-08-24T14:15:22Z",
    "cyratingLastSeen": "2019-08-24T14:15:22Z",
    "exploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "assetExposed": true,
    "owasp2017": [
      0
    ],
    "isAccepted": true,
    "patchInformation": "string",
    "cvssVector": "string",
    "virtualHost": "string",
    "platform": "string",
    "bugTraq": [
      0
    ],
    "serviceName": "string",
    "riskLevel": "Initial",
    "solutionType": "Unspecified",
    "age": 0,
    "data": "string",
    "description": "string",
    "farsight": {
      "risk": {
        "score": 0,
        "delta": 0
      },
      "updated": "2019-08-24T14:15:22Z",
      "lastThreatActivity": "2019-08-24T14:15:22Z"
    },
    "acceptExpires": "2019-08-24T14:15:22Z",
    "acceptedBy": "string",
    "acceptDate": "2019-08-24T14:15:22Z",
    "acceptComment": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanFinding] false none none
» id integer(int64) false read-only The ID of the entry.
» scanJobId integer(int64) false read-only none
» scanLogId integer(int64) false read-only none
» scheduleId integer(int64) false read-only none
» templateId integer(int64) false read-only none
» cvssScore number(double) false read-only none
» cvssV3Score number(double) false read-only none
» cvssV3Severity string false read-only none
» cvssV3Vector string false read-only none
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» reportDate string(date-time) false read-only none
» targetId integer(int64) false read-only none
» target string false read-only none
» hostname string false read-only none
» port integer(int64) false read-only none
» protocol integer(int64) false read-only none
» name string false read-only The name of the entry.
» source [string] false read-only none
» cve string false read-only none
» vulnId integer(int64) false read-only none
» isNew boolean false read-only none
» previouslyDetected boolean false read-only none
» type string false read-only none
» isPotentialFalsePositive boolean false read-only none
» productName string false read-only none
» productUrl string false read-only none
» solutionProduct string false read-only none
» checkCreated string(date-time) false read-only none
» hasExploits boolean false read-only none
» solution string false read-only none
» businessCriticality string false read-only none
» assetBusinessCriticality string false read-only none
» solutionTitle string false read-only none
» created string(date-time) false read-only The timestamp when the entry was created.
» cyrating number(double) false read-only none
» cyratingDelta number(double) false read-only none
» cyratingUpdated string(date-time) false read-only none
» cyratingLastSeen string(date-time) false read-only none
» exploitProbability number(double) false read-only none
» exploitProbabilityDelta number(double) false read-only none
» assetExposed boolean false read-only none
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» isAccepted boolean false read-only none
» patchInformation string false read-only none
» cvssVector string false none none
» virtualHost string false none none
» platform string false none none
» bugTraq [integer] false none An array of Bugtraq reference IDs.
» serviceName string false none none
» riskLevel string false none none
» solutionType string false none none
» age integer(int32) false none none
» data string false none none
» description string false read-only Description of the entry.
» farsight Farsight false read-only The farsight concists in additional information on risk such as likelihood, threat activity
»» risk Farsight.Risk false none none
»»» score number(float) false none none
»»» delta number(float) false none none
»» updated string(date-time) false none The timestamp when the entry was updated.
»» lastThreatActivity string(date-time) false none none
» acceptExpires string(date-time) false read-only none
» acceptedBy string false read-only The name of the user who accepted the risk.
» acceptDate string(date-time) false read-only none
» acceptComment string false read-only none

Enumerated Values

Property Value
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL
assetBusinessCriticality LOW
assetBusinessCriticality MEDIUM
assetBusinessCriticality HIGH
assetBusinessCriticality CRITICAL
riskLevel Initial
riskLevel Recommendation
riskLevel Low
riskLevel Medium
riskLevel High
riskLevel Critical
solutionType Unspecified
solutionType Unknown
solutionType Reconfigure
solutionType Workaround
solutionType InProgress
solutionType Contact
solutionType Update
solutionType Patch
solutionType Unack
solutionType NoSol
solutionType Account
solutionType Disable
solutionType Filter
solutionType Malware

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/outscan/findings \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/findings',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/findings',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/outscan/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/outscan/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/outscan/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /outscan/findings

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Outscan scan logs

Get a list of findings for a scan

# You can also use wget
curl -X GET \
/opi/rest/outscan/scan-logs/{scanLogId}/findings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scan-logs/{scanLogId}/findings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scan-logs/{scanLogId}/findings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/scan-logs/{scanLogId}/findings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/scan-logs/{scanLogId}/findings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/scan-logs/{scanLogId}/findings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/scan-logs/{scanLogId}/findings

Parameters

Name In Type Required Description
scanLogId path integer(int64) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "scanJobId": 0,
    "scanLogId": 0,
    "scheduleId": 0,
    "templateId": 0,
    "cvssScore": 0,
    "cvssV3Score": 0,
    "cvssV3Severity": "RECOMMENDATION",
    "cvssV3Vector": "string",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "reportDate": "2019-08-24T14:15:22Z",
    "targetId": 0,
    "target": "string",
    "hostname": "string",
    "port": 0,
    "protocol": 0,
    "name": "string",
    "source": [
      "SCOUT"
    ],
    "cve": "string",
    "vulnId": 0,
    "isNew": true,
    "previouslyDetected": true,
    "type": "string",
    "isPotentialFalsePositive": true,
    "productName": "string",
    "productUrl": "string",
    "solutionProduct": "string",
    "checkCreated": "2019-08-24T14:15:22Z",
    "hasExploits": true,
    "solution": "string",
    "businessCriticality": "LOW",
    "assetBusinessCriticality": "LOW",
    "solutionTitle": "string",
    "created": "2019-08-24T14:15:22Z",
    "cyrating": 0,
    "cyratingDelta": 0,
    "cyratingUpdated": "2019-08-24T14:15:22Z",
    "cyratingLastSeen": "2019-08-24T14:15:22Z",
    "exploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "assetExposed": true,
    "owasp2017": [
      0
    ],
    "isAccepted": true,
    "patchInformation": "string",
    "cvssVector": "string",
    "virtualHost": "string",
    "platform": "string",
    "bugTraq": [
      0
    ],
    "serviceName": "string",
    "riskLevel": "Initial",
    "solutionType": "Unspecified",
    "age": 0,
    "data": "string",
    "description": "string",
    "farsight": {
      "risk": {
        "score": 0,
        "delta": 0
      },
      "updated": "2019-08-24T14:15:22Z",
      "lastThreatActivity": "2019-08-24T14:15:22Z"
    },
    "acceptExpires": "2019-08-24T14:15:22Z",
    "acceptedBy": "string",
    "acceptDate": "2019-08-24T14:15:22Z",
    "acceptComment": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanFinding] false none none
» id integer(int64) false read-only The ID of the entry.
» scanJobId integer(int64) false read-only none
» scanLogId integer(int64) false read-only none
» scheduleId integer(int64) false read-only none
» templateId integer(int64) false read-only none
» cvssScore number(double) false read-only none
» cvssV3Score number(double) false read-only none
» cvssV3Severity string false read-only none
» cvssV3Vector string false read-only none
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» reportDate string(date-time) false read-only none
» targetId integer(int64) false read-only none
» target string false read-only none
» hostname string false read-only none
» port integer(int64) false read-only none
» protocol integer(int64) false read-only none
» name string false read-only The name of the entry.
» source [string] false read-only none
» cve string false read-only none
» vulnId integer(int64) false read-only none
» isNew boolean false read-only none
» previouslyDetected boolean false read-only none
» type string false read-only none
» isPotentialFalsePositive boolean false read-only none
» productName string false read-only none
» productUrl string false read-only none
» solutionProduct string false read-only none
» checkCreated string(date-time) false read-only none
» hasExploits boolean false read-only none
» solution string false read-only none
» businessCriticality string false read-only none
» assetBusinessCriticality string false read-only none
» solutionTitle string false read-only none
» created string(date-time) false read-only The timestamp when the entry was created.
» cyrating number(double) false read-only none
» cyratingDelta number(double) false read-only none
» cyratingUpdated string(date-time) false read-only none
» cyratingLastSeen string(date-time) false read-only none
» exploitProbability number(double) false read-only none
» exploitProbabilityDelta number(double) false read-only none
» assetExposed boolean false read-only none
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» isAccepted boolean false read-only none
» patchInformation string false read-only none
» cvssVector string false none none
» virtualHost string false none none
» platform string false none none
» bugTraq [integer] false none An array of Bugtraq reference IDs.
» serviceName string false none none
» riskLevel string false none none
» solutionType string false none none
» age integer(int32) false none none
» data string false none none
» description string false read-only Description of the entry.
» farsight Farsight false read-only The farsight concists in additional information on risk such as likelihood, threat activity
»» risk Farsight.Risk false none none
»»» score number(float) false none none
»»» delta number(float) false none none
»» updated string(date-time) false none The timestamp when the entry was updated.
»» lastThreatActivity string(date-time) false none none
» acceptExpires string(date-time) false read-only none
» acceptedBy string false read-only The name of the user who accepted the risk.
» acceptDate string(date-time) false read-only none
» acceptComment string false read-only none

Enumerated Values

Property Value
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL
assetBusinessCriticality LOW
assetBusinessCriticality MEDIUM
assetBusinessCriticality HIGH
assetBusinessCriticality CRITICAL
riskLevel Initial
riskLevel Recommendation
riskLevel Low
riskLevel Medium
riskLevel High
riskLevel Critical
solutionType Unspecified
solutionType Unknown
solutionType Reconfigure
solutionType Workaround
solutionType InProgress
solutionType Contact
solutionType Update
solutionType Patch
solutionType Unack
solutionType NoSol
solutionType Account
solutionType Disable
solutionType Filter
solutionType Malware

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a scan log

# You can also use wget
curl -X GET \
/opi/rest/outscan/scan-logs/{scanLogId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scan-logs/{scanLogId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scan-logs/{scanLogId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/scan-logs/{scanLogId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/scan-logs/{scanLogId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/scan-logs/{scanLogId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/scan-logs/{scanLogId}

Parameters

Name In Type Required Description
scanLogId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z",
  "target": "string",
  "targetId": 0,
  "schedule": "string",
  "scheduleId": 0,
  "scanJobId": 0,
  "status": "Invalid"
}

Responses

Status Meaning Description Schema
default Default default response OutscanScanLog

Get a list of scan logs

# You can also use wget
curl -X GET \
/opi/rest/outscan/scan-logs \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scan-logs',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scan-logs',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/scan-logs", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/scan-logs', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/scan-logs',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/scan-logs

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z",
    "target": "string",
    "targetId": 0,
    "schedule": "string",
    "scheduleId": 0,
    "scanJobId": 0,
    "status": "Invalid"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanScanLog] false none none
» id integer(int64) false read-only The ID of the entry.
» startDate string(date-time) false read-only none
» endDate string(date-time) false read-only none
» target string false read-only none
» targetId integer(int64) false read-only none
» schedule string false read-only none
» scheduleId integer(int64) false read-only none
» scanJobId integer(int64) false read-only none
» status string false none none

Enumerated Values

Property Value
status Invalid
status Ok
status Forced
status Timeout
status Stopped
status StoppedByUser
status Large
status KilledLarge
status Failed

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/outscan/scan-logs \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scan-logs',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scan-logs',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/outscan/scan-logs", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/outscan/scan-logs', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/outscan/scan-logs',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /outscan/scan-logs

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Outscan scans

Get a scan

# You can also use wget
curl -X GET \
/opi/rest/outscan/scans/{scanId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scans/{scanId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scans/{scanId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/scans/{scanId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/scans/{scanId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/scans/{scanId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/scans/{scanId}

Parameters

Name In Type Required Description
scanId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "target": "string",
  "targetId": 0,
  "scheduleId": 0,
  "status": "string",
  "scanStarted": "2019-08-24T14:15:22Z",
  "scanJobId": 0
}

Responses

Status Meaning Description Schema
default Default default response OutscanScan

Get a list of scans

# You can also use wget
curl -X GET \
/opi/rest/outscan/scans \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scans',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scans',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/scans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/scans', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/scans',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/scans

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "target": "string",
    "targetId": 0,
    "scheduleId": 0,
    "status": "string",
    "scanStarted": "2019-08-24T14:15:22Z",
    "scanJobId": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanScan] false none none
» id integer(int64) false read-only The ID of the entry.
» target string false read-only none
» targetId integer(int64) false read-only none
» scheduleId integer(int64) false read-only none
» status string false read-only none
» scanStarted string(date-time) false read-only none
» scanJobId integer(int64) false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/outscan/scans \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scans',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scans',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/outscan/scans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/outscan/scans', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/outscan/scans',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /outscan/scans

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Stop a scan

# You can also use wget
curl -X POST \
/opi/rest/outscan/scans/{scanId}/stop \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/scans/{scanId}/stop',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/scans/{scanId}/stop',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/outscan/scans/{scanId}/stop", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/outscan/scans/{scanId}/stop', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/outscan/scans/{scanId}/stop',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /outscan/scans/{scanId}/stop

Parameters

Name In Type Required Description
scanId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Outscan schedules

Get a schedule

# You can also use wget
curl -X GET \
/opi/rest/outscan/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules/{scheduleId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules/{scheduleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/schedules/{scheduleId}

Parameters

Name In Type Required Description
scheduleId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}

Responses

Status Meaning Description Schema
default Default default response OutscanSchedule

Delete a schedule

# You can also use wget
curl -X DELETE \
/opi/rest/outscan/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules/{scheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/outscan/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/outscan/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/outscan/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /outscan/schedules/{scheduleId}

Parameters

Name In Type Required Description
scheduleId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a schedule

# You can also use wget
curl -X PATCH \
/opi/rest/outscan/schedules/{scheduleId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules/{scheduleId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules/{scheduleId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/outscan/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/outscan/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/outscan/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /outscan/schedules/{scheduleId}

Body parameter

{
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}

Parameters

Name In Type Required Description
scheduleId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body OutscanSchedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of schedules

# You can also use wget
curl -X GET \
/opi/rest/outscan/schedules \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/schedules

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "nextScanDate": "2019-08-24T14:15:22Z",
    "template": 0,
    "name": "string",
    "targetList": "string",
    "recurrence": "Now"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanSchedule] false none none
» id integer(int64) false read-only The ID of the entry.
» nextScanDate string(date-time) false none none
» template integer(int64) false none none
» name string true none The name of the entry.
» targetList string true none none
» recurrence string false none none

Enumerated Values

Property Value
recurrence Now
recurrence Once
recurrence Weekly
recurrence Monthly
recurrence Bimonthly
recurrence Quarterly
recurrence Fortnightly
recurrence Daily

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a schedule

# You can also use wget
curl -X POST \
/opi/rest/outscan/schedules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/outscan/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/outscan/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/outscan/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /outscan/schedules

Body parameter

{
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body OutscanSchedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/outscan/schedules \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/outscan/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/outscan/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/outscan/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /outscan/schedules

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Start scanning now

# You can also use wget
curl -X POST \
/opi/rest/outscan/schedules/{scheduleId}/scan \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/schedules/{scheduleId}/scan',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/schedules/{scheduleId}/scan',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/outscan/schedules/{scheduleId}/scan", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/outscan/schedules/{scheduleId}/scan', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/outscan/schedules/{scheduleId}/scan',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /outscan/schedules/{scheduleId}/scan

Parameters

Name In Type Required Description
scheduleId path integer(int64) true none

The above code returns response like this:

default Response

0

Responses

Status Meaning Description Schema
default Default default response integer

Outscan targets

Get a target

# You can also use wget
curl -X GET \
/opi/rest/outscan/targets/{targetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/targets/{targetId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/targets/{targetId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/targets/{targetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/targets/{targetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/targets/{targetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/targets/{targetId}

Parameters

Name In Type Required Description
targetId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "ip": "string",
  "hostname": "string",
  "businessCriticality": "LOW",
  "exposed": true,
  "created": "2019-08-24T14:15:22Z",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ]
}

Responses

Status Meaning Description Schema
default Default default response OutscanTarget

Delete a target

# You can also use wget
curl -X DELETE \
/opi/rest/outscan/targets/{targetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/targets/{targetId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/targets/{targetId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/outscan/targets/{targetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/outscan/targets/{targetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/outscan/targets/{targetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /outscan/targets/{targetId}

Parameters

Name In Type Required Description
targetId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of targets

# You can also use wget
curl -X GET \
/opi/rest/outscan/targets \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/targets',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/targets',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/outscan/targets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/outscan/targets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/outscan/targets',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /outscan/targets

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "ip": "string",
    "hostname": "string",
    "businessCriticality": "LOW",
    "exposed": true,
    "created": "2019-08-24T14:15:22Z",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "source": [
      "SCOUT"
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [OutscanTarget] false none none
» id integer(int64) false read-only The ID of the entry.
» ip string false read-only none
» hostname string false read-only none
» businessCriticality string false read-only none
» exposed boolean false read-only none
» created string(date-time) false read-only The timestamp when the entry was created.
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» source [string] false read-only none

Enumerated Values

Property Value
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create new targets

# You can also use wget
curl -X POST \
/opi/rest/outscan/targets \
  -H 'Content-Type: text/plain' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'text/plain',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/targets',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
  'Content-Type':'text/plain',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/targets',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"text/plain"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/outscan/targets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'text/plain',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/outscan/targets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'text/plain',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/outscan/targets',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /outscan/targets

Body parameter

string

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/outscan/targets \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/outscan/targets',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/outscan/targets',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/outscan/targets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/outscan/targets', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/outscan/targets',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /outscan/targets

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Password recovery

Request password recovery email for username

# You can also use wget
curl -X POST \
/opi/rest/password-recovery \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'

};

$.ajax({
  url: '/opi/rest/password-recovery',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "username": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'

};

fetch('/opi/rest/password-recovery',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/password-recovery", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('/opi/rest/password-recovery', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post '/opi/rest/password-recovery',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /password-recovery

Body parameter

{
  "username": "string"
}

Parameters

Name In Type Required Description
body body PasswordRecoveryRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Product information

Get a list of products

# You can also use wget
curl -X GET \
/opi/rest/product-information \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/product-information',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/product-information',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/product-information", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/product-information', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/product-information',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /product-information

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "product": "string",
    "name": "string",
    "url": "string",
    "updated": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ProductInformation] false none none
» product string false read-only none
» name string false read-only The name of the entry.
» url string false read-only none
» updated string(date-time) false read-only The timestamp when the entry was updated.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/product-information \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/product-information',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/product-information',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/product-information", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/product-information', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/product-information',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /product-information

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Release notes

Get last release notes notification trigger timestamp

# You can also use wget
curl -X GET \
/opi/rest/release-notes/notification-trigger \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/release-notes/notification-trigger',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/release-notes/notification-trigger',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/release-notes/notification-trigger", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/release-notes/notification-trigger', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/release-notes/notification-trigger',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /release-notes/notification-trigger

The above code returns response like this:

default Response

"string"

Responses

Status Meaning Description Schema
default Default default response string

Trigger release notes notification and set trigger timestamp

# You can also use wget
curl -X POST \
/opi/rest/release-notes/trigger-notification \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/release-notes/trigger-notification',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/release-notes/trigger-notification',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/release-notes/trigger-notification", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/release-notes/trigger-notification', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/release-notes/trigger-notification',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /release-notes/trigger-notification

The above code returns response like this:

default Response

"string"

Responses

Status Meaning Description Schema
default Default default response string

Report schedules

Get a report schedule (Deprecated: 2019-12-11)

# You can also use wget
curl -X GET \
/opi/rest/report-schedules/{reportScheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules/{reportScheduleId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules/{reportScheduleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/report-schedules/{reportScheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/report-schedules/{reportScheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/report-schedules/{reportScheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /report-schedules/{reportScheduleId}

Parameters

Name In Type Required Description
reportScheduleId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "userId": 0,
  "subUserId": 0,
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "latestDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}

Responses

Status Meaning Description Schema
default Default default response ReportSchedule

Delete a report schedule (Deprecated: 2019-12-11)

# You can also use wget
curl -X DELETE \
/opi/rest/report-schedules/{reportScheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules/{reportScheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules/{reportScheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/report-schedules/{reportScheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/report-schedules/{reportScheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/report-schedules/{reportScheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /report-schedules/{reportScheduleId}

Parameters

Name In Type Required Description
reportScheduleId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a report schedule (Deprecated: 2019-12-11)

# You can also use wget
curl -X PATCH \
/opi/rest/report-schedules/{reportScheduleId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules/{reportScheduleId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules/{reportScheduleId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/report-schedules/{reportScheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/report-schedules/{reportScheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/report-schedules/{reportScheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /report-schedules/{reportScheduleId}

Body parameter

{
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}

Parameters

Name In Type Required Description
reportScheduleId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ReportSchedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of report schedules (Deprecated: 2019-12-11)

# You can also use wget
curl -X GET \
/opi/rest/report-schedules \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/report-schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/report-schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/report-schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /report-schedules

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "userId": 0,
    "subUserId": 0,
    "frequency": 0,
    "nextDate": "2019-08-24T14:15:22Z",
    "latestDate": "2019-08-24T14:15:22Z",
    "lastDate": "2019-08-24T14:15:22Z",
    "dayWeekMonth": 0,
    "name": "string",
    "reportType": 0,
    "format": 0,
    "zip": true,
    "recipient": [
      0
    ],
    "recipientEmail": "string",
    "encryptionKey": "string",
    "managedReportTitle": "string",
    "managedReportGroup": 0,
    "managedReportToken": "string",
    "scanType": 0,
    "recipientType": 0,
    "reportPassword": "string",
    "reportLevel": 0,
    "customSubject": "string",
    "customText": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ReportSchedule] false none none
» id integer(int64) false read-only The ID of the entry.
» userId integer(int64) false read-only none
» subUserId integer(int64) false read-only none
» frequency integer(int32) false none none
» nextDate string(date-time) false none none
» latestDate string(date-time) false read-only none
» lastDate string(date-time) false none none
» dayWeekMonth integer(int32) false none none
» name string true none The name of the entry.
» reportType integer(int32) false none none
» format integer(int32) false none none
» zip boolean false none none
» recipient [integer] false none none
» recipientEmail string false none none
» encryptionKey string true none none
» managedReportTitle string false none none
» managedReportGroup integer(int64) false none none
» managedReportToken string false none none
» scanType integer(int32) false none none
» recipientType integer(int32) false none none
» reportPassword string false none none
» reportLevel integer(int32) false none none
» customSubject string false none none
» customText string false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a new report schedule (Deprecated: 2019-12-11)

# You can also use wget
curl -X POST \
/opi/rest/report-schedules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/report-schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/report-schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/report-schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /report-schedules

Body parameter

{
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ReportSchedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count (Deprecated: 2019-12-11)

# You can also use wget
curl -X HEAD \
/opi/rest/report-schedules \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/report-schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/report-schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/report-schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /report-schedules

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Start scanning now (Deprecated: 2019-12-11)

# You can also use wget
curl -X POST \
/opi/rest/report-schedules/{reportScheduleId}/send \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/report-schedules/{reportScheduleId}/send',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/report-schedules/{reportScheduleId}/send',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/report-schedules/{reportScheduleId}/send", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/report-schedules/{reportScheduleId}/send', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/report-schedules/{reportScheduleId}/send',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /report-schedules/{reportScheduleId}/send

Parameters

Name In Type Required Description
reportScheduleId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Reports

Get a report cache entry and generate a token for downloading the report, expires after 5 minutes (Deprecated: 2021-02-25)

# You can also use wget
curl -X GET \
/opi/rest/reports/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/reports/{key}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/reports/{key}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/reports/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/reports/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/reports/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /reports/{key}

Parameters

Name In Type Required Description
key path string true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete a report (Deprecated: 2021-02-25)

# You can also use wget
curl -X DELETE \
/opi/rest/reports/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/reports/{key}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/reports/{key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/reports/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/reports/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/reports/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /reports/{key}

Parameters

Name In Type Required Description
key path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of report cache entries (Deprecated: 2021-02-25)

# You can also use wget
curl -X GET \
/opi/rest/reports \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/reports',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/reports',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /reports

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "created": "2019-08-24T14:15:22Z",
    "key": "string",
    "status": "string",
    "size": 0,
    "token": "string",
    "tokenExpires": "2019-08-24T14:15:22Z",
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ReportCacheEntry] false none none
» created string(date-time) false read-only The timestamp when the entry was created.
» key string false read-only none
» status string false read-only none
» size integer(int64) false read-only none
» token string false read-only none
» tokenExpires string(date-time) false read-only none
» name string false read-only The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Generate a report

# You can also use wget
curl -X POST \
/opi/rest/reports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "executiveSummary": true,
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "product": "Normal",
  "viewTemplateId": 0,
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "assetIdentifierIds": [
    0
  ],
  "serviceIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z",
  "filter": "string",
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/reports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /reports

Body parameter

{
  "name": "string",
  "executiveSummary": true,
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "product": "Normal",
  "viewTemplateId": 0,
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "assetIdentifierIds": [
    0
  ],
  "serviceIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z",
  "filter": "string",
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Report true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count (Deprecated: 2021-02-25)

# You can also use wget
curl -X HEAD \
/opi/rest/reports \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/reports',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/reports',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /reports

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Resource groups

Get a resource group

# You can also use wget
curl -X GET \
/opi/rest/resource-groups/{resourceGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups/{resourceGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups/{resourceGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/resource-groups/{resourceGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/resource-groups/{resourceGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/resource-groups/{resourceGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /resource-groups/{resourceGroupId}

Parameters

Name In Type Required Description
resourceGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ResourceGroup

Delete a resource group

# You can also use wget
curl -X DELETE \
/opi/rest/resource-groups/{resourceGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups/{resourceGroupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups/{resourceGroupId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/resource-groups/{resourceGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/resource-groups/{resourceGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/resource-groups/{resourceGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /resource-groups/{resourceGroupId}

Parameters

Name In Type Required Description
resourceGroupId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a resource group

# You can also use wget
curl -X PATCH \
/opi/rest/resource-groups/{resourceGroupId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups/{resourceGroupId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups/{resourceGroupId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/resource-groups/{resourceGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/resource-groups/{resourceGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/resource-groups/{resourceGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /resource-groups/{resourceGroupId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}

Parameters

Name In Type Required Description
resourceGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ResourceGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of resource groups

# You can also use wget
curl -X GET \
/opi/rest/resource-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/resource-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/resource-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/resource-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /resource-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "system": true,
    "resources": [
      {
        "type": "SCANCONFIGURATION",
        "tagIds": [
          0
        ]
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ResourceGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» system boolean false read-only Set to true when resource group is system resource group
» resources [Resource] false none The resource group resources
»» type string false none The resource type
»» tagIds [integer] false none The resource tag ids

Enumerated Values

Property Value
type SCANCONFIGURATION
type ACCOUNT
type SCHEDULEDREPORT
type MANAGEDREPORT
type DASHBOARD
type INTEGRATION
type ASSETGROUP
type ASSET
type APPSTAK
type VIEWTEMPLATE
type EVENTSUBSCRIPTION
type SCANPOLICY
type FINDINGTEMPLATE

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a resource group

# You can also use wget
curl -X POST \
/opi/rest/resource-groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/resource-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/resource-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/resource-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /resource-groups

Body parameter

{
  "customerId": 0,
  "name": "string",
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ResourceGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/resource-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/resource-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/resource-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/resource-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/resource-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/resource-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /resource-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Rule engine

Run rule engine

# You can also use wget
curl -X POST \
/opi/rest/rule-engine \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/rule-engine',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[
  {
    "request": {
      "method": "string",
      "url": "string"
    },
    "match": {
      "name": "string",
      "version": "string",
      "context": "string",
      "patternUuid": "string"
    }
  }
]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/rule-engine',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/rule-engine", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/rule-engine', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/rule-engine',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /rule-engine

Body parameter

[
  {
    "request": {
      "method": "string",
      "url": "string"
    },
    "match": {
      "name": "string",
      "version": "string",
      "context": "string",
      "patternUuid": "string"
    }
  }
]

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
body body PatternMatch true none

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "checkId": 0,
    "findingTemplateId": 0,
    "cvssScore": 0,
    "cvssSeverity": "RECOMMENDATION",
    "cvssV2Score": 0,
    "cvssV2BaseScore": 0,
    "cvssV2TemporalScore": 0,
    "cvssV2EnvironmentalScore": 0,
    "cvssV2Vector": "string",
    "cvssV2Severity": "RECOMMENDATION",
    "cvssV3Score": 0,
    "cvssV3BaseScore": 0,
    "cvssV3TemporalScore": 0,
    "cvssV3EnvironmentalScore": 0,
    "cvssV3Vector": "string",
    "cvssV3Severity": "RECOMMENDATION",
    "falsePositive": "2019-08-24T14:15:22Z",
    "falsePositiveComment": "string",
    "isAccepted": true,
    "accepted": "2019-08-24T14:15:22Z",
    "acceptedComment": "string",
    "acceptedUntil": "2019-08-24T14:15:22Z",
    "fixed": "2019-08-24T14:15:22Z",
    "commentsCount": 0,
    "customName": "string",
    "customDescription": "string",
    "customCve": "string",
    "customCwe": 0,
    "customBugTraq": "string",
    "customSolution": "string",
    "solutionPatches": [
      "string"
    ],
    "customCvssV2Vector": "string",
    "customCvssV3Vector": "string",
    "source": [
      "SCOUT"
    ],
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "name": "string",
    "description": "string",
    "cve": "string",
    "cwe": "string",
    "solutionType": "NOT_CLASSIFIED",
    "solution": "string",
    "solutionProduct": "string",
    "solutionTitle": "string",
    "solutionUuid": "string",
    "exploitAvailable": true,
    "matchIds": [
      0
    ],
    "attachmentIds": [
      0
    ],
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "firstScanId": 0,
    "lastScanId": 0,
    "status": "TO_REVIEW",
    "commentPendingSince": "2019-08-24T14:15:22Z",
    "reviewed": "2019-08-24T14:15:22Z",
    "reviewedBy": "string",
    "reviewedById": 0,
    "verified": "2019-08-24T14:15:22Z",
    "verifiedBy": "string",
    "verifiedById": 0,
    "qualityAssured": "2019-08-24T14:15:22Z",
    "qualityAssuredBy": "string",
    "qualityAssuredById": 0,
    "published": "2019-08-24T14:15:22Z",
    "publishedBy": "string",
    "publishedById": 0,
    "rejected": "2019-08-24T14:15:22Z",
    "rejectedBy": "string",
    "rejectedById": 0,
    "recreation": "string",
    "alternativeRecreation": "string",
    "impact": "string",
    "sans25": 0,
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ],
    "capec": [
      0
    ],
    "assetId": 0,
    "assetName": "string",
    "potential": true,
    "softwareComponent": "string",
    "cyrating": 0,
    "cyratingDelta": 0,
    "exploitProbability": 0,
    "exploitProbabilityDelta": 0,
    "cyratingUpdated": "2019-08-24T14:15:22Z",
    "cyratingLastSeen": "2019-08-24T14:15:22Z",
    "seenLastScan": true,
    "watching": true,
    "age": 0,
    "assetGroupIds": [
      0
    ],
    "sentTo": [
      "string"
    ],
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "bugTraq": [
      0
    ],
    "secureCodeWarrior": {
      "name": "string",
      "description": "string",
      "url": "string"
    },
    "farsight": {
      "risk": {
        "score": 0,
        "delta": 0
      },
      "updated": "2019-08-24T14:15:22Z",
      "lastThreatActivity": "2019-08-24T14:15:22Z"
    },
    "matches": [
      {
        "type": "WAS",
        "service": {
          "name": "string",
          "scheme": "string",
          "port": 0,
          "protocol": "TCP",
          "virtualHost": "string"
        },
        "patternUuid": "string"
      }
    ],
    "classifications": {
      "sans25": 0,
      "capec": [
        0
      ],
      "owasp2004": [
        0
      ],
      "owasp2007": [
        0
      ],
      "owasp2010": [
        0
      ],
      "owasp2013": [
        0
      ],
      "owasp2017": [
        0
      ],
      "owasp2021": [
        0
      ]
    },
    "ports": [
      {
        "name": "string",
        "port": 0,
        "protocol": "TCP"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Finding] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» checkId integer(int32) false none The check id associated with the finding
» findingTemplateId integer(int32) false none The finding template from which the finding was created
» cvssScore number(float) false read-only The CVSS score, take CVSS V3 if available, otherwise CVSS V2
» cvssSeverity string false read-only The CVSS severity, take CVSS V3 severity if available, otherwise CVSS V2
» cvssV2Score number(float) false read-only The CVSS V2 score
» cvssV2BaseScore number(float) false read-only The CVSS V2 base score
» cvssV2TemporalScore number(float) false read-only The CVSS V2 temporal score
» cvssV2EnvironmentalScore number(float) false read-only The CVSS V2 environmental score
» cvssV2Vector string false read-only The CVSS V2 vector
» cvssV2Severity string false read-only The CVSS V2 severity
» cvssV3Score number(float) false read-only The CVSS V3 score
» cvssV3BaseScore number(float) false read-only The CVSS V3 base score
» cvssV3TemporalScore number(float) false read-only The CVSS V3 temporal score
» cvssV3EnvironmentalScore number(float) false read-only The CVSS V3 environmental score
» cvssV3Vector string false read-only The CVSS V3 vector
» cvssV3Severity string false read-only The CVSS V3 severity
» falsePositive string(date-time) false read-only The date when marked as false positive
» falsePositiveComment string false read-only The false positive comment
» isAccepted boolean false read-only Set to true when the risk is accepted
» accepted string(date-time) false read-only The date when the finding was marked as accepted risk.
» acceptedComment string false read-only The accepted comment
» acceptedUntil string(date-time) false read-only The date when the risk acceptance will expire.
» fixed string(date-time) false read-only The date when the risk was fixed
» commentsCount integer(int32) false read-only The number of comments
» customName string false none The custom name
» customDescription string false none The custom description
» customCve string false none The custom CVE
» customCwe integer(int32) false none The custom CWE
» customBugTraq string false none The custom bug track
» customSolution string false none The custom solution
» solutionPatches [string] false none The solution patches
» customCvssV2Vector string false none The custom CVSS V2 vector
» customCvssV3Vector string false none The custom CVSS V3 vector
» source [string] false read-only The scan sources
» activeSubscriptionTypes [string] false read-only The finding's active subscription types
» name string false read-only The name of the entry.
» description string false read-only Description of the entry.
» cve string false read-only The finding CVE
» cwe string false read-only CWE classification of the entry.
» solutionType string false read-only The solution type
» solution string false read-only The solution
» solutionProduct string false read-only The solution product
» solutionTitle string false read-only The solution title
» solutionUuid string false read-only The solution uuid
» exploitAvailable boolean false read-only Set to true when exploits are available
» matchIds [integer] false none The match ids
» attachmentIds [integer] false read-only The attachments ids
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» firstScanId integer(int32) false read-only The id of the first scan
» lastScanId integer(int32) false read-only The id of the last scan
» status string false read-only The finding status
» commentPendingSince string(date-time) false read-only The date since comment is pending
» reviewed string(date-time) false read-only The finding reviewed date
» reviewedBy string false read-only The username of the user that reviewed the finding
» reviewedById integer(int32) false read-only The user ID of the user that reviewed the finding
» verified string(date-time) false read-only The finding verified date
» verifiedBy string false read-only The username of the user that verified the finding
» verifiedById integer(int32) false read-only The user ID of the user that verified the finding
» qualityAssured string(date-time) false read-only The finding quality assured date
» qualityAssuredBy string false read-only The username of the user that quality assured the finding
» qualityAssuredById integer(int32) false read-only The user ID of the user that quality assured the finding
» published string(date-time) false read-only The finding published date
» publishedBy string false read-only The username of the user that published the finding
» publishedById integer(int32) false read-only The user ID of the user that published the finding
» rejected string(date-time) false read-only The finding rejected date
» rejectedBy string false read-only The username of the user that rejected the finding
» rejectedById integer(int32) false read-only The user ID of the user that rejected the finding
» recreation string false none The recreation
» alternativeRecreation string false none The alternate recreation
» impact string false none The impact
» sans25 integer(int32) false read-only SANS 25 classification of the entry.
» owasp2004 [integer] false read-only An array of OWASP Top 10 2004 classifications of the entry.
» owasp2007 [integer] false read-only An array of OWASP Top 10 2007 classifications of the entry.
» owasp2010 [integer] false read-only An array of OWASP Top 10 2010 classifications of the entry.
» owasp2013 [integer] false read-only An array of OWASP Top 10 2013 classifications of the entry.
» owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
» owasp2021 [integer] false read-only The OWASP 2021 scores
» capec [integer] false read-only CAPEC classification of the entry.
» assetId integer(int32) true none The asset id
» assetName string false read-only The asset name
» potential boolean false none The finding potential. Set to true when potential false positive
» softwareComponent string false read-only The software component
» cyrating number(double) false read-only The cyrating
» cyratingDelta number(double) false read-only The cyrating delta
» exploitProbability number(double) false read-only The exploit probability
» exploitProbabilityDelta number(double) false read-only The exploit probability delta
» cyratingUpdated string(date-time) false read-only The cyrating updated date
» cyratingLastSeen string(date-time) false read-only The cyrating last seen date
» seenLastScan boolean false read-only Set to true if finding was seen in last scan
» watching boolean false read-only Whether the current user is watching this finding
» age integer(int32) false read-only The finding's age in days since creation
» assetGroupIds [integer] false none The asset group ids
» sentTo [string] false read-only A list of e-mail addresses that this finding has been sent to
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» bugTraq [integer] false read-only An array of Bugtraq reference IDs.
» secureCodeWarrior SecureCodeWarrior false read-only The secure code warrior information on the vulnerability description and training
»» name string false none The name of the entry.
»» description string false none Description of the entry.
»» url string false none none
» farsight Farsight false read-only The farsight concists in additional information on risk such as likelihood, threat activity
»» risk Farsight.Risk false none none
»»» score number(float) false none none
»»» delta number(float) false none none
»» updated string(date-time) false none The timestamp when the entry was updated.
»» lastThreatActivity string(date-time) false none none
» matches [BaseMatch] false read-only The match list
»» type string true none none
»» service Service false none none
»»» name string true none The name of the entry.
»»» scheme string false none none
»»» port integer(int32) false none none
»»» protocol string true none none
»»» virtualHost string false none none
»» patternUuid string false none none
» classifications Classification.Classifications false read-only The classifications such as CAPEC, OWASP20XX
»» sans25 integer(int32) false none SANS 25 classification of the entry.
»» capec [integer] false none CAPEC classification of the entry.
»» owasp2004 [integer] false none An array of OWASP Top 10 2004 classifications of the entry.
»» owasp2007 [integer] false none An array of OWASP Top 10 2007 classifications of the entry.
»» owasp2010 [integer] false none An array of OWASP Top 10 2010 classifications of the entry.
»» owasp2013 [integer] false none An array of OWASP Top 10 2013 classifications of the entry.
»» owasp2017 [integer] false none An array of OWASP Top 10 2017 classifications of the entry.
»» owasp2021 [integer] false none none
» ports [Port] false read-only Ports information on the vulnerability description
»» name string false none The name of the entry.
»» port integer(int32) false none none
»» protocol string false none none

Enumerated Values

Property Value
cvssSeverity RECOMMENDATION
cvssSeverity LOW
cvssSeverity MEDIUM
cvssSeverity HIGH
cvssSeverity CRITICAL
cvssV2Severity RECOMMENDATION
cvssV2Severity LOW
cvssV2Severity MEDIUM
cvssV2Severity HIGH
cvssV2Severity CRITICAL
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE
status TO_REVIEW
status TO_VERIFY
status TO_QA
status TO_PUBLISH
status REJECTED
status PRESENT
status ACCEPTED
status FALSE_POSITIVE
status PENDING_VERIFICATION
status FIXED
status IRREPRODUCIBLE
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC
protocol TCP
protocol UDP
protocol TCP
protocol UDP

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Scan configuration groups

Get scan configuration group

# You can also use wget
curl -X GET \
/opi/rest/scan-configuration-groups/{scanConfigurationGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-configuration-groups/{scanConfigurationGroupId}

Parameters

Name In Type Required Description
scanConfigurationGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "count": 0
}

Responses

Status Meaning Description Schema
default Default default response ScanConfigurationGroup

Delete scan configuration group

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configuration-groups/{scanConfigurationGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configuration-groups/{scanConfigurationGroupId}

Parameters

Name In Type Required Description
scanConfigurationGroupId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a scan configuration group

# You can also use wget
curl -X PATCH \
/opi/rest/scan-configuration-groups/{scanConfigurationGroupId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/scan-configuration-groups/{scanConfigurationGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /scan-configuration-groups/{scanConfigurationGroupId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
scanConfigurationGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanConfigurationGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of scan configuration groups

# You can also use wget
curl -X GET \
/opi/rest/scan-configuration-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-configuration-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-configuration-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-configuration-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-configuration-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "parentId": 0,
    "count": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ScanConfigurationGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» parentId integer(int32) false none The ID of the parent entry.
» count integer(int64) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a scan configuration group

# You can also use wget
curl -X POST \
/opi/rest/scan-configuration-groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-configuration-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-configuration-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-configuration-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-configuration-groups

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanConfigurationGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scan-configuration-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configuration-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configuration-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scan-configuration-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scan-configuration-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scan-configuration-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scan-configuration-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Scan configurations

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
assetIdentifierId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/{scanConfigurationId}/asset-identifiers/{assetIdentifierId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
assetIdentifierId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/{scanConfigurationId}/assets/{assetId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
assetId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/{scanConfigurationId}/assets/{assetId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/{scanConfigurationId}/assets/{assetId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
assetId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a scan configuration

# You can also use wget
curl -X GET \
/opi/rest/scan-configurations/{scanConfigurationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-configurations/{scanConfigurationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-configurations/{scanConfigurationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-configurations/{scanConfigurationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-configurations/{scanConfigurationId}

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "template": "SCOUT",
  "groupId": 0,
  "scheduleIds": [
    0
  ],
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "lastScan": "2019-08-24T14:15:22Z",
  "configuration": {
    "template": "SCOUT"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ScanConfiguration

Delete a scan configuration

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/{scanConfigurationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/{scanConfigurationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/{scanConfigurationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/{scanConfigurationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/{scanConfigurationId}

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a scan configuration

# You can also use wget
curl -X PATCH \
/opi/rest/scan-configurations/{scanConfigurationId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/scan-configurations/{scanConfigurationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/scan-configurations/{scanConfigurationId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/scan-configurations/{scanConfigurationId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /scan-configurations/{scanConfigurationId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanConfiguration true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/{scanConfigurationId}/schedules/{scheduleId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/{scanConfigurationId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/{scanConfigurationId}/schedules/{scheduleId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/{scanConfigurationId}/tags/{tagId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/{scanConfigurationId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/{scanConfigurationId}/tags/{tagId}

Name In Type Required Description
scanConfigurationId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/tags/{tagId}

Name In Type Required Description
tagId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations/tags/{tagId}

Name In Type Required Description
tagId path integer(int32) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of scan configurations

# You can also use wget
curl -X GET \
/opi/rest/scan-configurations \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-configurations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-configurations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-configurations',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-configurations

Scan configurations define settings that should apply to the scan.

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "template": "SCOUT",
    "groupId": 0,
    "scheduleIds": [
      0
    ],
    "assetIdentifierIds": [
      0
    ],
    "assetIds": [
      0
    ],
    "workflowId": 0,
    "enabled": true,
    "scannerId": 0,
    "nextOccurrence": "2019-08-24T14:15:22Z",
    "lastScan": "2019-08-24T14:15:22Z",
    "configuration": {
      "template": "SCOUT"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ScanConfiguration] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» template string false read-only The scan template
» groupId integer(int32) false none The scan group id
» scheduleIds [integer] false read-only The schedule ids associated with this scan configuration
» assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
» assetIds [integer] false none The asset IDs associated with this scan configuration
» workflowId integer(int32) false none The workflow ID associated with this scan configuration
» enabled boolean false none Determines if the entry is enabled or not.
» scannerId integer(int32) false none The scanner id
» nextOccurrence string(date-time) false read-only The scan next occurrence date
» lastScan string(date-time) false read-only Last time a scan was performed using this configuration
» configuration BaseScanConfigurationTemplate true none The scan configuration
»» template string true none none
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
template SCOUT
template SCALE
template SWAT
template CLOUDSEC
template NETWORK_SCAN
template DOCKER_SCAN
template DOCKER_DISCOVERY
template NETWORK_DISCOVERY
template CLOUD_DISCOVERY
template AGENT_SCAN
template WORKFLOW
template SCOUT
template SCALE
template SWAT
template CLOUDSEC
template NETWORK_SCAN
template DOCKER_SCAN
template DOCKER_DISCOVERY
template NETWORK_DISCOVERY
template CLOUD_DISCOVERY
template AGENT_SCAN
template WORKFLOW

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a scan configuration

# You can also use wget
curl -X POST \
/opi/rest/scan-configurations \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-configurations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-configurations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-configurations',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-configurations

Body parameter

{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanConfiguration true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Delete one or several scan configurations

# You can also use wget
curl -X DELETE \
/opi/rest/scan-configurations \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-configurations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-configurations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-configurations',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-configurations

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scan-configurations \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scan-configurations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scan-configurations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scan-configurations',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scan-configurations

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Partially update one or several scan configurations

# You can also use wget
curl -X PATCH \
/opi/rest/scan-configurations \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/scan-configurations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/scan-configurations', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/scan-configurations',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /scan-configurations

Body parameter

{
  "customerId": 0,
  "name": "string",
  "groupId": 0,
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "configuration": {
    "template": "SCOUT"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body ScanConfiguration true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/{scanConfigurationId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/{scanConfigurationId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/{scanConfigurationId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/{scanConfigurationId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/{scanConfigurationId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of tags to several scan configurations

# You can also use wget
curl -X PUT \
/opi/rest/scan-configurations/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-configurations/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-configurations/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-configurations/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-configurations/tags

Body parameter

[]

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Start a scan based on this configuration

# You can also use wget
curl -X POST \
/opi/rest/scan-configurations/{scanConfigurationId}/scan \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/scan',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/scan',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-configurations/{scanConfigurationId}/scan", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-configurations/{scanConfigurationId}/scan', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-configurations/{scanConfigurationId}/scan',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-configurations/{scanConfigurationId}/scan

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Test a setup LUA script

# You can also use wget
curl -X POST \
/opi/rest/scan-configurations/test-setup-script \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/test-setup-script',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "script": "string",
  "blacklist": [
    "string"
  ],
  "hostmap": [
    {
      "from": "string",
      "to": [
        "string"
      ]
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/test-setup-script',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-configurations/test-setup-script", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-configurations/test-setup-script', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-configurations/test-setup-script',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-configurations/test-setup-script

Body parameter

{
  "script": "string",
  "blacklist": [
    "string"
  ],
  "hostmap": [
    {
      "from": "string",
      "to": [
        "string"
      ]
    }
  ]
}

Parameters

Name In Type Required Description
body body TestSetupScript true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Test an application setup LUA script

# You can also use wget
curl -X POST \
/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script \
  -H 'Content-Type: text/plain' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'text/plain',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
  'Content-Type':'text/plain',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"text/plain"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'text/plain',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'text/plain',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-configurations/{scanConfigurationId}/test-setup-script',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-configurations/{scanConfigurationId}/test-setup-script

Body parameter

string

Parameters

Name In Type Required Description
scanConfigurationId path integer(int32) true none
body body string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Scan policies

Get a scan policy

# You can also use wget
curl -X GET \
/opi/rest/scan-policies/{scanPolicyId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-policies/{scanPolicyId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-policies/{scanPolicyId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-policies/{scanPolicyId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-policies/{scanPolicyId}

Parameters

Name In Type Required Description
scanPolicyId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ScanPolicy

Delete a scan policy

# You can also use wget
curl -X DELETE \
/opi/rest/scan-policies/{scanPolicyId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-policies/{scanPolicyId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-policies/{scanPolicyId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-policies/{scanPolicyId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-policies/{scanPolicyId}

Parameters

Name In Type Required Description
scanPolicyId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update an scan policy

# You can also use wget
curl -X PATCH \
/opi/rest/scan-policies/{scanPolicyId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/scan-policies/{scanPolicyId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/scan-policies/{scanPolicyId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/scan-policies/{scanPolicyId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /scan-policies/{scanPolicyId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  }
}

Parameters

Name In Type Required Description
scanPolicyId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanPolicy true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-policies/{scanPolicyId}/accounts/{accountId}

Name In Type Required Description
scanPolicyId path integer(int32) true none
accountId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-policies/{scanPolicyId}/accounts/{accountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-policies/{scanPolicyId}/accounts/{accountId}

Name In Type Required Description
scanPolicyId path integer(int32) true none
accountId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-policies/{scanPolicyId}/tags/{tagId}

Name In Type Required Description
scanPolicyId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scan-policies/{scanPolicyId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scan-policies/{scanPolicyId}/tags/{tagId}

Name In Type Required Description
scanPolicyId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get default scan policy settings

# You can also use wget
curl -X GET \
/opi/rest/scan-policies/default-settings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/default-settings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/default-settings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-policies/default-settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-policies/default-settings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-policies/default-settings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-policies/default-settings

The above code returns response like this:

default Response

{
  "safeOnly": true,
  "tryDefaultCredentials": true,
  "ignoreFallbackKernels": true,
  "useDiscoveredCredentials": true,
  "virtualHostsIp": true,
  "virtualHostsHostName": true,
  "virtualHostsReverseDns": true,
  "speed": "string",
  "portsTcp": "string",
  "portsUdp": "string",
  "netstatCheck": "string",
  "regularPortScanFallback": true,
  "authenticatedScanSshPort": 65535,
  "trustedCasPem": "string",
  "useCustomCredentials": true,
  "enableRemoteRegistry": true
}

Responses

Status Meaning Description Schema
default Default default response ScanPolicySettings

Get a list of scan policies

# You can also use wget
curl -X GET \
/opi/rest/scan-policies \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scan-policies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scan-policies', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scan-policies',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scan-policies

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "system": true,
    "accountIds": [
      0
    ],
    "settings": {
      "safeOnly": true,
      "tryDefaultCredentials": true,
      "ignoreFallbackKernels": true,
      "useDiscoveredCredentials": true,
      "virtualHostsIp": true,
      "virtualHostsHostName": true,
      "virtualHostsReverseDns": true,
      "speed": "string",
      "portsTcp": "string",
      "portsUdp": "string",
      "netstatCheck": "string",
      "regularPortScanFallback": true,
      "authenticatedScanSshPort": 65535,
      "trustedCasPem": "string",
      "useCustomCredentials": true,
      "enableRemoteRegistry": true
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ScanPolicy] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» system boolean false read-only none
» accountIds [integer] false none none
» settings ScanPolicySettings false none none
»» safeOnly boolean false none none
»» tryDefaultCredentials boolean false none none
»» ignoreFallbackKernels boolean false none none
»» useDiscoveredCredentials boolean false none none
»» virtualHostsIp boolean false none none
»» virtualHostsHostName boolean false none none
»» virtualHostsReverseDns boolean false none none
»» speed string false none none
»» portsTcp string false none none
»» portsUdp string false none none
»» netstatCheck string false none none
»» regularPortScanFallback boolean false none none
»» authenticatedScanSshPort integer(int32) false none none
»» trustedCasPem string false none none
»» useCustomCredentials boolean false none none
»» enableRemoteRegistry boolean false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a scan policy

# You can also use wget
curl -X POST \
/opi/rest/scan-policies \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scan-policies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scan-policies', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scan-policies',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scan-policies

Body parameter

{
  "customerId": 0,
  "name": "string",
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanPolicy true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scan-policies \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scan-policies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scan-policies', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scan-policies',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scan-policies

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/scan-policies/{scanPolicyId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-policies/{scanPolicyId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-policies/{scanPolicyId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-policies/{scanPolicyId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-policies/{scanPolicyId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
scanPolicyId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Modify linked set of account IDs

# You can also use wget
curl -X PUT \
/opi/rest/scan-policies/{scanPolicyId}/accounts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scan-policies/{scanPolicyId}/accounts',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scan-policies/{scanPolicyId}/accounts',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scan-policies/{scanPolicyId}/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scan-policies/{scanPolicyId}/accounts', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scan-policies/{scanPolicyId}/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scan-policies/{scanPolicyId}/accounts

Body parameter

[]

Parameters

Name In Type Required Description
scanPolicyId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Scanners

Get a scanner

# You can also use wget
curl -X GET \
/opi/rest/scanners/{scannerId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scanners/{scannerId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scanners/{scannerId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scanners/{scannerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scanners/{scannerId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scanners/{scannerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scanners/{scannerId}

Parameters

Name In Type Required Description
scannerId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "userId": 0,
  "name": "string",
  "ipaddress": "string",
  "mode": 0,
  "approved": true,
  "inactive": true,
  "useProxy": true,
  "polling": true,
  "serverStatus": "string",
  "lastConnection": "2019-08-24T14:15:22Z",
  "lastUpdate": "2019-08-24T14:15:22Z",
  "version": "string",
  "uiVersion": "string",
  "scannerVersion": "string",
  "appsecScaleScanner": true,
  "groupId": 0,
  "groupName": "string",
  "isOutpost": true,
  "isAwsScanner": true,
  "scanningDisabled": true,
  "isGroup": true,
  "performUpdate": true,
  "hwAddr": "string",
  "hmacKey": "string",
  "rulesVersion": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
default Default default response Scanner

Get a list of scanners

# You can also use wget
curl -X GET \
/opi/rest/scanners \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scanners',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scanners',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scanners", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scanners', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scanners',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scanners

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "userId": 0,
    "name": "string",
    "ipaddress": "string",
    "mode": 0,
    "approved": true,
    "inactive": true,
    "useProxy": true,
    "polling": true,
    "serverStatus": "string",
    "lastConnection": "2019-08-24T14:15:22Z",
    "lastUpdate": "2019-08-24T14:15:22Z",
    "version": "string",
    "uiVersion": "string",
    "scannerVersion": "string",
    "appsecScaleScanner": true,
    "groupId": 0,
    "groupName": "string",
    "isOutpost": true,
    "isAwsScanner": true,
    "scanningDisabled": true,
    "isGroup": true,
    "performUpdate": true,
    "hwAddr": "string",
    "hmacKey": "string",
    "rulesVersion": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Scanner] false none none
» id integer(int64) false read-only The ID of the entry.
» userId integer(int64) false read-only none
» name string true none The name of the entry.
» ipaddress string true none none
» mode integer(int32) false none none
» approved boolean false none none
» inactive boolean false none none
» useProxy boolean false none none
» polling boolean false read-only none
» serverStatus string false read-only none
» lastConnection string(date-time) false read-only none
» lastUpdate string(date-time) false read-only none
» version string false read-only none
» uiVersion string false read-only none
» scannerVersion string false read-only none
» appsecScaleScanner boolean false read-only none
» groupId integer(int64) false none none
» groupName string false none none
» isOutpost boolean false read-only none
» isAwsScanner boolean false read-only none
» scanningDisabled boolean false read-only none
» isGroup boolean false none none
» performUpdate boolean false read-only none
» hwAddr string false read-only none
» hmacKey string false read-only none
» rulesVersion string(date-time) false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scanners \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scanners',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scanners',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scanners", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scanners', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scanners',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scanners

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Scans

Get the crawled URLs for a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId}/crawled-urls \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/crawled-urls',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/crawled-urls',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}/crawled-urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}/crawled-urls', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}/crawled-urls',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}/crawled-urls

Parameters

Name In Type Required Description
scanId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the discovery results for a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId}/discovery \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/discovery',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/discovery',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}/discovery", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}/discovery', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}/discovery',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}/discovery

Parameters

Name In Type Required Description
scanId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the issues for a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId}/issues \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/issues',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/issues',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}/issues", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}/issues', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}/issues',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}/issues

Parameters

Name In Type Required Description
scanId path integer(int32) true none

The above code returns response like this:

default Response

[
  "string"
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get the log for a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId}/log \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/log',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/log',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}/log", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}/log', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}/log',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}/log

Parameters

Name In Type Required Description
scanId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}

Parameters

Name In Type Required Description
scanId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "jobId": "string",
  "status": "QUEUED",
  "statusDetails": "string",
  "source": "SCOUT",
  "scanConfigurationId": 0,
  "scanConfigurationName": "string",
  "workflowId": 0,
  "workflowName": "string",
  "started": "2019-08-24T14:15:22Z",
  "ended": "2019-08-24T14:15:22Z",
  "expectedStart": "2019-08-24T14:15:22Z",
  "expectedEnd": "2019-08-24T14:15:22Z",
  "blueprintAvailable": true,
  "assetIdentifierId": 0,
  "assetIdentifierType": "IP",
  "assetIdentifierName": "string",
  "assetId": 0,
  "assetName": "string",
  "latestRuleDate": "2019-08-24T14:15:22Z",
  "scanless": true,
  "parentId": 0,
  "scheduleId": 0,
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ScanLog

Get a list of scans

# You can also use wget
curl -X GET \
/opi/rest/scans \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "jobId": "string",
    "status": "QUEUED",
    "statusDetails": "string",
    "source": "SCOUT",
    "scanConfigurationId": 0,
    "scanConfigurationName": "string",
    "workflowId": 0,
    "workflowName": "string",
    "started": "2019-08-24T14:15:22Z",
    "ended": "2019-08-24T14:15:22Z",
    "expectedStart": "2019-08-24T14:15:22Z",
    "expectedEnd": "2019-08-24T14:15:22Z",
    "blueprintAvailable": true,
    "assetIdentifierId": 0,
    "assetIdentifierType": "IP",
    "assetIdentifierName": "string",
    "assetId": 0,
    "assetName": "string",
    "latestRuleDate": "2019-08-24T14:15:22Z",
    "scanless": true,
    "parentId": 0,
    "scheduleId": 0,
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ScanLog] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» jobId string false none The id of the scan job
» status string true none The scan status
» statusDetails string false none The scan status details
» source string true none The scan source
» scanConfigurationId integer(int32) false none The id of the scan configuration
» scanConfigurationName string false read-only The name of the scan configuration
» workflowId integer(int32) false none The id of the workflow
» workflowName string false read-only The name of the workflow
» started string(date-time) false none The scan started date
» ended string(date-time) false none The scan ended date
» expectedStart string(date-time) false read-only The scan expected start date
» expectedEnd string(date-time) false read-only The scan expected end date
» blueprintAvailable boolean false read-only Set to true when scan blueprint is available
» assetIdentifierId integer(int32) false none The ID of the asset identifier associated with this entry
» assetIdentifierType string false read-only The type of asset on which the scan is performed
» assetIdentifierName string false read-only The name of asset on which the scan is performed
» assetId integer(int32) false none The id of asset on which the scan is performed
» assetName string false read-only The name of asset on which the scan is performed
» latestRuleDate string(date-time) false none The latest rule date taken into account to perform the scan
» scanless boolean false none Set to true when scan is scanless (eg only detection performed)
» parentId integer(int32) false none The ID of the parent entry.
» scheduleId integer(int32) false none The schedule id when scan triggered by a schedule.
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
status QUEUED
status PENDING
status STARTING
status RUNNING
status STOPPING
status STOPPED
status REPORTING
status FINISHED
status ISSUES
status FAILED
source SCOUT
source SCALE
source SWAT
source CLOUDSEC
source NETWORK_SCAN
source DOCKER_SCAN
source DOCKER_DISCOVERY
source NETWORK_DISCOVERY
source CLOUD_DISCOVERY
source AGENT_SCAN
source WORKFLOW
assetIdentifierType IP
assetIdentifierType HOSTNAME
assetIdentifierType AWS_ACCOUNT_ID
assetIdentifierType AWS_INSTANCE_ID
assetIdentifierType AWS_REGION
assetIdentifierType MAC
assetIdentifierType NETBIOS
assetIdentifierType GCP_PROJECT_ID
assetIdentifierType MAZ_TENANT_ID
assetIdentifierType MAZ_SUBSCRIPTION
assetIdentifierType MAZ_RESOURCE_GROUP
assetIdentifierType MAZ_RESOURCE
assetIdentifierType DOCKER_REGISTRY
assetIdentifierType DOCKER_IMAGE
assetIdentifierType SEED_PATH
assetIdentifierType AGENT
assetIdentifierType SERIAL_MACHINE_ID
assetIdentifierType SERIAL_PRODUCT_ID
assetIdentifierType SERIAL_DISK_ID

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a scan

# You can also use wget
curl -X POST \
/opi/rest/scans \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "jobId": "string",
  "status": "QUEUED",
  "statusDetails": "string",
  "source": "SCOUT",
  "scanConfigurationId": 0,
  "workflowId": 0,
  "started": "2019-08-24T14:15:22Z",
  "ended": "2019-08-24T14:15:22Z",
  "assetIdentifierId": 0,
  "assetId": 0,
  "latestRuleDate": "2019-08-24T14:15:22Z",
  "scanless": true,
  "parentId": 0,
  "scheduleId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scans', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scans',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scans

Body parameter

{
  "customerId": 0,
  "jobId": "string",
  "status": "QUEUED",
  "statusDetails": "string",
  "source": "SCOUT",
  "scanConfigurationId": 0,
  "workflowId": 0,
  "started": "2019-08-24T14:15:22Z",
  "ended": "2019-08-24T14:15:22Z",
  "assetIdentifierId": 0,
  "assetId": 0,
  "latestRuleDate": "2019-08-24T14:15:22Z",
  "scanless": true,
  "parentId": 0,
  "scheduleId": 0
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScanLog true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scans \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scans', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scans',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scans

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get metadata for a scan

# You can also use wget
curl -X GET \
/opi/rest/scans/{scanId}/metadata \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/metadata',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/metadata',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scans/{scanId}/metadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scans/{scanId}/metadata', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scans/{scanId}/metadata',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scans/{scanId}/metadata

Parameters

Name In Type Required Description
scanId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "schema": "string",
  "attacker": "string"
}

Responses

Status Meaning Description Schema
default Default default response ScanLogMetadata

Request a blueprint

# You can also use wget
curl -X POST \
/opi/rest/scans/{scanId}/blueprints \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/blueprints',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/blueprints',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scans/{scanId}/blueprints", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scans/{scanId}/blueprints', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scans/{scanId}/blueprints',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scans/{scanId}/blueprints

Parameters

Name In Type Required Description
scanId path integer(int32) true none
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Stop a scan

# You can also use wget
curl -X POST \
/opi/rest/scans/{scanId}/stop \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scans/{scanId}/stop',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scans/{scanId}/stop',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scans/{scanId}/stop", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scans/{scanId}/stop', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scans/{scanId}/stop',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scans/{scanId}/stop

Parameters

Name In Type Required Description
scanId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Scheduled reports

Get a scheduled report

# You can also use wget
curl -X GET \
/opi/rest/scheduled-reports/{scheduledReportId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scheduled-reports/{scheduledReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scheduled-reports/{scheduledReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scheduled-reports/{scheduledReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scheduled-reports/{scheduledReportId}

Parameters

Name In Type Required Description
scheduledReportId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "lastSent": "2019-08-24T14:15:22Z",
  "scheduleIds": [
    0
  ],
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ScheduledReport

Delete a scheduled report

# You can also use wget
curl -X DELETE \
/opi/rest/scheduled-reports/{scheduledReportId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scheduled-reports/{scheduledReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scheduled-reports/{scheduledReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scheduled-reports/{scheduledReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scheduled-reports/{scheduledReportId}

Parameters

Name In Type Required Description
scheduledReportId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a scheduled report

# You can also use wget
curl -X PATCH \
/opi/rest/scheduled-reports/{scheduledReportId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/scheduled-reports/{scheduledReportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/scheduled-reports/{scheduledReportId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/scheduled-reports/{scheduledReportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /scheduled-reports/{scheduledReportId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  }
}

Parameters

Name In Type Required Description
scheduledReportId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScheduledReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scheduled-reports/{scheduledReportId}/schedules/{scheduleId}

Name In Type Required Description
scheduledReportId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scheduled-reports/{scheduledReportId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scheduled-reports/{scheduledReportId}/schedules/{scheduleId}

Name In Type Required Description
scheduledReportId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scheduled-reports/{scheduledReportId}/tags/{tagId}

Name In Type Required Description
scheduledReportId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/scheduled-reports/{scheduledReportId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /scheduled-reports/{scheduledReportId}/tags/{tagId}

Name In Type Required Description
scheduledReportId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of scheduled reports

# You can also use wget
curl -X GET \
/opi/rest/scheduled-reports \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/scheduled-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/scheduled-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/scheduled-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /scheduled-reports

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "enabled": true,
    "lastSent": "2019-08-24T14:15:22Z",
    "scheduleIds": [
      0
    ],
    "nextOccurrence": "2019-08-24T14:15:22Z",
    "workflowId": 0,
    "deliveryMethod": {
      "email": {
        "userIds": [
          0
        ],
        "recipients": {
          "addresses": [
            "string"
          ],
          "pgpKey": "string"
        }
      },
      "managedReport": {
        "name": "string",
        "tags": "string"
      }
    },
    "scope": {
      "assetIds": [
        0
      ],
      "assetGroupIds": [
        0
      ],
      "tagIds": [
        0
      ]
    },
    "report": {
      "formats": [
        "PDF"
      ],
      "type": "Technical",
      "viewTemplateId": 0,
      "viewTemplateName": "string",
      "level": "Detailed",
      "product": "Normal",
      "password": "string",
      "executiveSummary": true,
      "zip": true,
      "timeFrame": "LAST_DAY",
      "startDate": "2019-08-24T14:15:22Z",
      "endDate": "2019-08-24T14:15:22Z"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ScheduledReport] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» enabled boolean false none Determines if the entry is enabled or not.
» lastSent string(date-time) false read-only none
» scheduleIds [integer] false read-only none
» nextOccurrence string(date-time) false read-only none
» workflowId integer(int32) false none The workflow ID associated with this report
» deliveryMethod DeliveryMethod true none none
»» email DeliveryMethod.Email false none none
»»» userIds [integer] false none none
»»» recipients DeliveryMethod.Recipients false none none
»»»» addresses [string] false none none
»»»» pgpKey string false none none
»» managedReport DeliveryMethod.ManagedReport false none none
»»» name string false none The name of the entry.
»»» tags string false none none
» scope ScheduledReport.Scope true none none
»» assetIds [integer] false none none
»» assetGroupIds [integer] false none none
»» tagIds [integer] false none none
» report ScheduledReport.Report true none none
»» formats [string] true none none
»» type string true none none
»» viewTemplateId integer(int32) false none none
»» viewTemplateName string false none none
»» level string false none none
»» product string false none none
»» password string false none none
»» executiveSummary boolean false none none
»» zip boolean false none none
»» timeFrame string false none none
»» startDate string(date-time) false none none
»» endDate string(date-time) false none none
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
type Technical
type Trend
type GroupVulnerability
type Delta
type Pci
type WasDiscovery
type Discovery
type SolutionTaskReport
type SolutionTargetReport
type GroupTrending
type GroupDelta
type Compliance
type Consumption
level Detailed
level Management
level Summary
product Normal
product Pci
product Was
product SWAT
product Compliance
product Appsec Scale
product APPSEC
product CLOUDSEC
timeFrame LAST_DAY
timeFrame LAST_WEEK
timeFrame LAST_MONTH
timeFrame LAST_QUARTER
timeFrame LAST_YEAR
timeFrame CUSTOM

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a scheduled report

# You can also use wget
curl -X POST \
/opi/rest/scheduled-reports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scheduled-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scheduled-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scheduled-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scheduled-reports

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ScheduledReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/scheduled-reports \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/scheduled-reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/scheduled-reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/scheduled-reports',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /scheduled-reports

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/scheduled-reports/{scheduledReportId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/scheduled-reports/{scheduledReportId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/scheduled-reports/{scheduledReportId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/scheduled-reports/{scheduledReportId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /scheduled-reports/{scheduledReportId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
scheduledReportId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Send report

# You can also use wget
curl -X POST \
/opi/rest/scheduled-reports/{scheduledReportId}/send \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scheduled-reports/{scheduledReportId}/send',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scheduled-reports/{scheduledReportId}/send',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scheduled-reports/{scheduledReportId}/send", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scheduled-reports/{scheduledReportId}/send', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scheduled-reports/{scheduledReportId}/send',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scheduled-reports/{scheduledReportId}/send

Parameters

Name In Type Required Description
scheduledReportId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Schedules

Get a schedule

# You can also use wget
curl -X GET \
/opi/rest/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules/{scheduleId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules/{scheduleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /schedules/{scheduleId}

Parameters

Name In Type Required Description
scheduleId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "scanConfigurationIds": [
    0
  ],
  "workflowIds": [
    0
  ],
  "scheduledReportIds": [
    0
  ],
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}

Responses

Status Meaning Description Schema
default Default default response Schedule

Delete a schedule

# You can also use wget
curl -X DELETE \
/opi/rest/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules/{scheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /schedules/{scheduleId}

Parameters

Name In Type Required Description
scheduleId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a schedule

# You can also use wget
curl -X PATCH \
/opi/rest/schedules/{scheduleId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules/{scheduleId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules/{scheduleId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /schedules/{scheduleId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}

Parameters

Name In Type Required Description
scheduleId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Schedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of schedules

# You can also use wget
curl -X GET \
/opi/rest/schedules \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /schedules

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "enabled": true,
    "frequency": "NONE",
    "interval": 0,
    "weekdays": [
      "MONDAY"
    ],
    "days": [
      0
    ],
    "nthDays": [
      0
    ],
    "weeks": [
      0
    ],
    "months": [
      "JANUARY"
    ],
    "remainingOccurrences": 0,
    "scanConfigurationIds": [
      0
    ],
    "workflowIds": [
      0
    ],
    "scheduledReportIds": [
      0
    ],
    "timezone": "string",
    "scanWindowDuration": 12,
    "startsFrom": "2019-08-24T14:15:22Z",
    "until": "2019-08-24T14:15:22Z",
    "nextOccurrence": "2019-08-24T14:15:22Z",
    "blockedTimeSlots": {
      "monday": [
        0
      ],
      "tuesday": [
        0
      ],
      "wednesday": [
        0
      ],
      "thursday": [
        0
      ],
      "friday": [
        0
      ],
      "saturday": [
        0
      ],
      "sunday": [
        0
      ]
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Schedule] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» enabled boolean false none Determines if the entry is enabled or not.
» frequency string true none The schedule frequency
» interval integer(int32) true none The schedule interval
» weekdays [string] false none The schedule weekdays set what weekdays have been selected for recurrence
» days [integer] false none The schedule days set what days have been selected for recurrence
» nthDays [integer] false none The schedule nthDays set what ordinal days have been selected for recurrence
» weeks [integer] false none The schedule weeks set what weeks have been selected for recurrence
» months [string] false none The schedule months set what months have been selected for recurrence
» remainingOccurrences integer(int32) false none The schedule remaining occurrences
» scanConfigurationIds [integer] false read-only The scan configuration IDs associated with this schedule
» workflowIds [integer] false read-only The workflow IDs associated with this schedule
» scheduledReportIds [integer] false read-only The report IDs associated with this schedule
» timezone string false none The schedule time zone
» scanWindowDuration integer(int32) false none The schedule scan window duration.
» startsFrom string(date-time) true none The schedule starts from date
» until string(date-time) false none The schedule until date
» nextOccurrence string(date-time) false read-only The schedule next occurrence date
» blockedTimeSlots Schedule.BlockedTimeSlots false none The schedule blocked time slots
»» monday [integer] false none none
»» tuesday [integer] false none none
»» wednesday [integer] false none none
»» thursday [integer] false none none
»» friday [integer] false none none
»» saturday [integer] false none none
»» sunday [integer] false none none

Enumerated Values

Property Value
frequency NONE
frequency ONCE
frequency HOURLY
frequency DAILY
frequency WEEKLY
frequency MONTHLY
frequency YEARLY

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a schedule

# You can also use wget
curl -X POST \
/opi/rest/schedules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /schedules

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Schedule true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/schedules \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/schedules',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/schedules',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /schedules

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Scoping

Submit scoping information.

# You can also use wget
curl -X POST \
/opi/rest/scoping \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/scoping',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "targetSolution": "Appsec SWAT",
  "targetStartDate": "2019-08-24T14:15:22Z",
  "assetIdentifierIds": [
    0
  ],
  "adminUrls": [
    "string"
  ],
  "outOfScopeUrls": [
    "string"
  ],
  "knownSensitiveFunctionality": "string",
  "rolesAndCredentials": "string",
  "componentsAndTechnologies": "string",
  "focusAreas": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/scoping',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/scoping", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/scoping', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/scoping',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /scoping

Body parameter

{
  "targetSolution": "Appsec SWAT",
  "targetStartDate": "2019-08-24T14:15:22Z",
  "assetIdentifierIds": [
    0
  ],
  "adminUrls": [
    "string"
  ],
  "outOfScopeUrls": [
    "string"
  ],
  "knownSensitiveFunctionality": "string",
  "rolesAndCredentials": "string",
  "componentsAndTechnologies": "string",
  "focusAreas": "string"
}

Parameters

Name In Type Required Description
body body ScopingInformation true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Sub users

Change current sub-users password; if current user isn't a sub-user, redirect to /users/me/change-password

# You can also use wget
curl -X POST \
/opi/rest/sub-users/me/change-password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/me/change-password',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "password": "string",
  "oldPassword": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/me/change-password',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/sub-users/me/change-password", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/sub-users/me/change-password', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/sub-users/me/change-password',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /sub-users/me/change-password

Body parameter

{
  "password": "string",
  "oldPassword": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ChangePasswordRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a sub-user

# You can also use wget
curl -X GET \
/opi/rest/sub-users/{subUserId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/sub-users/{subUserId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/sub-users/{subUserId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/sub-users/{subUserId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /sub-users/{subUserId}

Parameters

Name In Type Required Description
subUserId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "timezone": "string",
  "portalPreferences": "string",
  "customerId": 0,
  "id": 0,
  "subUser": true,
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "parentId": 0,
  "mobilePhone": "string",
  "lastLogonIp": "string",
  "lastLogonDate": "2019-08-24T14:15:22Z",
  "logons": 0,
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "userRolePermissions": [
    "ASSETS_VIEW"
  ],
  "allowedCustomerTagIds": [
    0
  ],
  "roles": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "allowedCustomerTags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response SubUser

Delete a sub-user

# You can also use wget
curl -X DELETE \
/opi/rest/sub-users/{subUserId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/sub-users/{subUserId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/sub-users/{subUserId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/sub-users/{subUserId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /sub-users/{subUserId}

Parameters

Name In Type Required Description
subUserId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a sub-user

# You can also use wget
curl -X PATCH \
/opi/rest/sub-users/{subUserId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/sub-users/{subUserId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/sub-users/{subUserId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/sub-users/{subUserId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /sub-users/{subUserId}

Body parameter

{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}

Parameters

Name In Type Required Description
subUserId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubUser true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/sub-users/{subUserId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/sub-users/{subUserId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/sub-users/{subUserId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/sub-users/{subUserId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /sub-users/{subUserId}/tags/{tagId}

Name In Type Required Description
subUserId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/sub-users/{subUserId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/sub-users/{subUserId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/sub-users/{subUserId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/sub-users/{subUserId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /sub-users/{subUserId}/tags/{tagId}

Name In Type Required Description
subUserId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get current sub-user; if current user isn't a sub-user, redirect to /users/me

# You can also use wget
curl -X GET \
/opi/rest/sub-users/me \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/me',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/me',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/sub-users/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/sub-users/me', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/sub-users/me',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /sub-users/me

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update current sub-user; if current user isn't a sub-user, redirect to /users/me

# You can also use wget
curl -X PATCH \
/opi/rest/sub-users/me \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/me',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/me',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/sub-users/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/sub-users/me', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/sub-users/me',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /sub-users/me

Body parameter

{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubUser true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of sub-users

# You can also use wget
curl -X GET \
/opi/rest/sub-users \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/sub-users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/sub-users', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/sub-users',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /sub-users

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "timezone": "string",
    "portalPreferences": "string",
    "customerId": 0,
    "id": 0,
    "subUser": true,
    "username": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "emailEncryptionKey": "string",
    "countryCode": "string",
    "stateCode": "string",
    "parentId": 0,
    "mobilePhone": "string",
    "lastLogonIp": "string",
    "lastLogonDate": "2019-08-24T14:15:22Z",
    "logons": 0,
    "language": "string",
    "subParentId": 0,
    "superUser": true,
    "snapshotSubscriptions": 0,
    "snapshotSubscriptionsRemaining": 0,
    "swatSubscriptions": 0,
    "swatSubscriptionsRemaining": 0,
    "userRoleIds": [
      0
    ],
    "resourceGroupIds": [
      0
    ],
    "userRolePermissions": [
      "ASSETS_VIEW"
    ],
    "allowedCustomerTagIds": [
      0
    ],
    "roles": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "allowedCustomerTags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SubUser] false none none
» timezone string false none The user time zone
» portalPreferences string false none The user portal preferences
» customerId integer(int32) false read-only The ID of the customer owning the entry.
» id integer(int64) false read-only The ID of the entry.
» subUser boolean false read-only none
» username string true none none
» firstName string true none none
» lastName string true none none
» email string true none none
» emailEncryptionKey string false none none
» countryCode string false none none
» stateCode string false none none
» parentId integer(int64) false read-only The ID of the parent entry.
» mobilePhone string false none none
» lastLogonIp string false read-only none
» lastLogonDate string(date-time) false read-only none
» logons integer(int64) false read-only none
» language string false none none
» subParentId integer(int64) false none none
» superUser boolean false none none
» snapshotSubscriptions integer(int64) false read-only none
» snapshotSubscriptionsRemaining integer(int64) false read-only none
» swatSubscriptions integer(int64) false read-only none
» swatSubscriptionsRemaining integer(int64) false read-only none
» userRoleIds [integer] false none none
» resourceGroupIds [integer] false none none
» userRolePermissions [string] false read-only none
» allowedCustomerTagIds [integer] false none none
» roles string false read-only The user's roles
» tags [Tag] false read-only [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» allowedCustomerTags [Tag] false read-only The allowed customer tags

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a new sub-user

# You can also use wget
curl -X POST \
/opi/rest/sub-users \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/sub-users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/sub-users', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/sub-users',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /sub-users

Body parameter

{
  "timezone": "string",
  "portalPreferences": "string",
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "mobilePhone": "string",
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "allowedCustomerTagIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubUser true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/sub-users \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/sub-users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/sub-users', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/sub-users',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /sub-users

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/sub-users/{subUserId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/sub-users/{subUserId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/sub-users/{subUserId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/sub-users/{subUserId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/sub-users/{subUserId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/sub-users/{subUserId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /sub-users/{subUserId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
subUserId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Subscription audits

Get a subscription audit

# You can also use wget
curl -X GET \
/opi/rest/subscription-audits/{auditId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscription-audits/{auditId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscription-audits/{auditId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscription-audits/{auditId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscription-audits/{auditId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscription-audits/{auditId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscription-audits/{auditId}

Parameters

Name In Type Required Description
auditId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "action": "string",
  "time": "2019-08-24T14:15:22Z",
  "ip": "string",
  "comment": "string",
  "username": "string",
  "customerName": "string"
}

Responses

Status Meaning Description Schema
default Default default response SubscriptionAudit

Get a list of subscription audits

# You can also use wget
curl -X GET \
/opi/rest/subscription-audits \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscription-audits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscription-audits',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscription-audits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscription-audits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscription-audits',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscription-audits

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "action": "string",
    "time": "2019-08-24T14:15:22Z",
    "ip": "string",
    "comment": "string",
    "username": "string",
    "customerName": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SubscriptionAudit] false none none
» id integer(int64) false read-only The ID of the entry.
» action string false read-only none
» time string(date-time) false read-only none
» ip string false read-only none
» comment string false read-only none
» username string false read-only none
» customerName string false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/subscription-audits \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscription-audits',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscription-audits',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/subscription-audits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/subscription-audits', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/subscription-audits',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /subscription-audits

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Subscriptions

Get a subscription

# You can also use wget
curl -X GET \
/opi/rest/subscriptions/{subscriptionUuid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/{subscriptionUuid}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/{subscriptionUuid}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions/{subscriptionUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions/{subscriptionUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions/{subscriptionUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions/{subscriptionUuid}

Parameters

Name In Type Required Description
subscriptionUuid path string true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}

Responses

Status Meaning Description Schema
default Default default response Subscription

Delete a subscription

# You can also use wget
curl -X DELETE \
/opi/rest/subscriptions/{subscriptionUuid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/{subscriptionUuid}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/{subscriptionUuid}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/subscriptions/{subscriptionUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/subscriptions/{subscriptionUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/subscriptions/{subscriptionUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /subscriptions/{subscriptionUuid}

Parameters

Name In Type Required Description
subscriptionUuid path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a subscription

# You can also use wget
curl -X PATCH \
/opi/rest/subscriptions/{subscriptionUuid} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/{subscriptionUuid}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/{subscriptionUuid}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/subscriptions/{subscriptionUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/subscriptions/{subscriptionUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/subscriptions/{subscriptionUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /subscriptions/{subscriptionUuid}

Body parameter

{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}

Parameters

Name In Type Required Description
subscriptionUuid path string true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Subscription true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a subscription template

# You can also use wget
curl -X GET \
/opi/rest/subscriptions/templates/{subscriptionTemplateUuid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions/templates/{subscriptionTemplateUuid}

Parameters

Name In Type Required Description
subscriptionTemplateUuid path string true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}

Responses

Status Meaning Description Schema
default Default default response SubscriptionTemplate

Delete a subscription template

# You can also use wget
curl -X DELETE \
/opi/rest/subscriptions/templates/{subscriptionTemplateUuid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /subscriptions/templates/{subscriptionTemplateUuid}

Parameters

Name In Type Required Description
subscriptionTemplateUuid path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a subscription template

# You can also use wget
curl -X PATCH \
/opi/rest/subscriptions/templates/{subscriptionTemplateUuid} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/subscriptions/templates/{subscriptionTemplateUuid}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /subscriptions/templates/{subscriptionTemplateUuid}

Body parameter

{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}

Parameters

Name In Type Required Description
subscriptionTemplateUuid path string true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubscriptionTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get asset groups associated with the subscription

# You can also use wget
curl -X GET \
/opi/rest/subscriptions/{subscriptionId}/asset-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/{subscriptionId}/asset-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/{subscriptionId}/asset-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions/{subscriptionId}/asset-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions/{subscriptionId}/asset-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions/{subscriptionId}/asset-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions/{subscriptionId}/asset-groups

Parameters

Name In Type Required Description
subscriptionId path string true none
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "parentId": 0,
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "summary": "string",
    "summaryPublishedAt": "2019-08-24T14:15:22Z",
    "path": [
      0
    ],
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "managed": true,
    "commentPendingSince": "2019-08-24T14:15:22Z",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [AssetGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» parentId integer(int32) false none The ID of the parent entry.
» assetIds [integer] false read-only The component assets
» assetGroupIds [integer] false read-only The children asset groups
» summary string false read-only The content of the executive summary
» summaryPublishedAt string(date-time) false read-only When the executive summary was published
» path [integer] false read-only The path of the asset group tree
» activeSubscriptionTypes [string] false read-only The assetgroup's active subscription types
» managed boolean false read-only Managed internally by (e.g SWAT_API or GhostLab)
» commentPendingSince string(date-time) false read-only The date since comment is pending
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of subscriptions

# You can also use wget
curl -X GET \
/opi/rest/subscriptions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "type": "DAST",
    "associations": {
      "assetGroups": [
        "string"
      ]
    },
    "durationInDays": 0,
    "activeUntil": "2019-08-24T14:15:22Z",
    "activatedAt": "2019-08-24T14:15:22Z",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string",
    "template": {
      "uuid": "string",
      "variables": "string",
      "template": "string",
      "name": "string"
    },
    "customer": {
      "uuid": "string"
    },
    "limits": {
      "netsecAssets": 0,
      "netsecScans": 0,
      "netsecInternalAssets": 0,
      "netsecInternalScans": 0,
      "netsecApplianceAssets": 0,
      "netsecApplianceScans": 0,
      "netsecApplianceExternalAssets": 0,
      "netsecApplianceExternalScans": 0,
      "complianceAssets": 0,
      "complianceScans": 0,
      "complianceInternalAssets": 0,
      "complianceInternalScans": 0,
      "complianceApplianceAssets": 0,
      "complianceApplianceScans": 0,
      "complianceApplianceExternalAssets": 0,
      "complianceApplianceExternalScans": 0,
      "pciAssets": 0,
      "pciScans": 0,
      "scaleAssets": 0,
      "scaleScans": 0,
      "scaleInternalAssets": 0,
      "scaleApplianceAssets": 0,
      "scaleApplianceScans": 0,
      "scaleApplianceExternalScans": 0,
      "scaleApplianceExternalAssets": 0,
      "cloudsecAssets": 0,
      "cloudsecScans": 0,
      "networkDiscoveryScans": 0,
      "networkDiscoveryApplianceScans": 0,
      "cloudDiscoveryScans": 0,
      "cloudDiscoveryApplianceScans": 0,
      "networkAssets": 0,
      "networkScans": 0,
      "networkApplianceAssets": 0,
      "networkApplianceScans": 0,
      "dockerImageDiscoveryScans": 0,
      "dockerImageAssets": 0,
      "dockerImageScans": 0,
      "dockerImageDiscoveryApplianceScans": 0,
      "dockerImageApplianceAssets": 0,
      "dockerImageApplianceScans": 0,
      "outscanNXAssets": 0,
      "outscanNXApplianceAssets": 0
    },
    "isActive": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Subscription] false none none
» uuid string false none The UUID of the entry.
» type string false none none
» associations Subscription.Associations false none none
»» assetGroups [string] false none none
» durationInDays integer(int32) false none none
» activeUntil string(date-time) false none none
» activatedAt string(date-time) false none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.
» template Subscription.Template false none none
»» uuid string true none The UUID of the entry.
»» variables string false none none
»» template string false none none
»» name string false none The name of the entry.
» customer Subscription.Customer false none none
»» uuid string true none The UUID of the entry.
» limits Subscription.Limits false none none
»» netsecAssets integer(int32) false none The netsec assets
»» netsecScans integer(int32) false none The netsec scans
»» netsecInternalAssets integer(int32) false none The netsec internal assets
»» netsecInternalScans integer(int32) false none The netsec internal scans
»» netsecApplianceAssets integer(int32) false none The netsec appliance assets
»» netsecApplianceScans integer(int32) false none The netsec appliance scans
»» netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
»» netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
»» complianceAssets integer(int32) false none The compliance assets
»» complianceScans integer(int32) false none The compliance scans
»» complianceInternalAssets integer(int32) false none The compliance internal assets
»» complianceInternalScans integer(int32) false none The compliance internal scans
»» complianceApplianceAssets integer(int32) false none The compliance appliance assets
»» complianceApplianceScans integer(int32) false none The compliance appliance scans
»» complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
»» complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
»» pciAssets integer(int32) false none The pci assets
»» pciScans integer(int32) false none The pci scans
»» scaleAssets integer(int32) false none The scale assets
»» scaleScans integer(int32) false none The scale scans
»» scaleInternalAssets integer(int32) false none The scale internal assets
»» scaleApplianceAssets integer(int32) false none The scale appliance assets
»» scaleApplianceScans integer(int32) false none The scale appliance scans
»» scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
»» scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
»» cloudsecAssets integer(int32) false none The cloudsec assets
»» cloudsecScans integer(int32) false none The cloudsec scans
»» networkDiscoveryScans integer(int32) false none The network discovery scans
»» networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
»» cloudDiscoveryScans integer(int32) false none The cloud discovery scans
»» cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
»» networkAssets integer(int32) false none The network assets
»» networkScans integer(int32) false none The network scans
»» networkApplianceAssets integer(int32) false none The network appliance assets
»» networkApplianceScans integer(int32) false none The network appliance scans
»» dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
»» dockerImageAssets integer(int32) false none The docker image assets
»» dockerImageScans integer(int32) false none The docker image scans
»» dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
»» dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
»» dockerImageApplianceScans integer(int32) false none The docker image appliance scans
»» outscanNXAssets integer(int32) false none The outscan NX assets
»» outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets
» isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a subscription

# You can also use wget
curl -X POST \
/opi/rest/subscriptions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/subscriptions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/subscriptions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/subscriptions',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /subscriptions

Body parameter

{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Subscription true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/subscriptions/templates \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/subscriptions/templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/subscriptions/templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/subscriptions/templates',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /subscriptions/templates

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of subscription templates

# You can also use wget
curl -X GET \
/opi/rest/subscriptions/templates \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions/templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions/templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions/templates',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions/templates

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "uuid": "string",
    "name": "string",
    "organization": {
      "uuid": "string"
    },
    "variables": "string",
    "template": "string",
    "created": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updated": "2019-08-24T14:15:22Z",
    "updatedBy": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SubscriptionTemplate] false none none
» uuid string false none The UUID of the entry.
» name string true none The name of the entry.
» organization SubscriptionTemplate.Organization true none none
»» uuid string true none The UUID of the entry.
» variables string false none none
» template string true none none
» created string(date-time) false none The timestamp when the entry was created.
» createdBy string false none The name of the user who created the entry.
» updated string(date-time) false none The timestamp when the entry was updated.
» updatedBy string false none The name of the user who updated the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a subscription template

# You can also use wget
curl -X POST \
/opi/rest/subscriptions/templates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/subscriptions/templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/subscriptions/templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/subscriptions/templates',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /subscriptions/templates

Body parameter

{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubscriptionTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get variables for subscription templates

# You can also use wget
curl -X GET \
/opi/rest/subscriptions/template-variables \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/template-variables',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/template-variables',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/subscriptions/template-variables", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/subscriptions/template-variables', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/subscriptions/template-variables',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /subscriptions/template-variables

The above code returns response like this:

default Response

[
  {
    "key": "string",
    "description": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SubscriptionTemplateVariable] false none none
» key string false none The subscription template variable name
» description string false none Description of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Preview a subscription template

# You can also use wget
curl -X POST \
/opi/rest/subscriptions/templates/preview \
  -H 'Content-Type: application/json' \
  -H 'Accept: text/plain' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/templates/preview',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "variables": "string",
  "template": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'text/plain',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/templates/preview',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"text/plain"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/subscriptions/templates/preview", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'text/plain',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/subscriptions/templates/preview', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'text/plain',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/subscriptions/templates/preview',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /subscriptions/templates/preview

Body parameter

{
  "variables": "string",
  "template": "string"
}

Parameters

Name In Type Required Description
body body SubscriptionTemplatePreviewRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Generate a report

# You can also use wget
curl -X POST \
/opi/rest/subscriptions/reports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/subscriptions/reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/subscriptions/reports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/subscriptions/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/subscriptions/reports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/subscriptions/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /subscriptions/reports

Body parameter

{
  "customerIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SubscriptionReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Summaries

Get a summary

# You can also use wget
curl -X GET \
/opi/rest/summaries/{summaryId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries/{summaryId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries/{summaryId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/summaries/{summaryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/summaries/{summaryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/summaries/{summaryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /summaries/{summaryId}

Parameters

Name In Type Required Description
summaryId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}

Responses

Status Meaning Description Schema
default Default default response Summary

Delete a summary

# You can also use wget
curl -X DELETE \
/opi/rest/summaries/{summaryId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries/{summaryId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries/{summaryId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/summaries/{summaryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/summaries/{summaryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/summaries/{summaryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /summaries/{summaryId}

Parameters

Name In Type Required Description
summaryId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a summary

# You can also use wget
curl -X PATCH \
/opi/rest/summaries/{summaryId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries/{summaryId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries/{summaryId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/summaries/{summaryId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/summaries/{summaryId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/summaries/{summaryId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /summaries/{summaryId}

Body parameter

{
  "customerId": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}

Parameters

Name In Type Required Description
summaryId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Summary true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of summaries

# You can also use wget
curl -X GET \
/opi/rest/summaries \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/summaries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/summaries', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/summaries',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /summaries

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "content": "string",
    "assetGroupId": 0,
    "swatScheduleId": 0,
    "reviewed": "2019-08-24T14:15:22Z",
    "reviewedBy": "string",
    "reviewedById": 0,
    "qualityAssured": "2019-08-24T14:15:22Z",
    "qualityAssuredBy": "string",
    "qualityAssuredById": 0,
    "published": "2019-08-24T14:15:22Z",
    "publishedBy": "string",
    "publishedById": 0,
    "status": "PENDING_REVIEW"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Summary] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» content string false none none
» assetGroupId integer(int32) true none none
» swatScheduleId integer(int64) true none none
» reviewed string(date-time) false none none
» reviewedBy string false none none
» reviewedById integer(int32) false none none
» qualityAssured string(date-time) false none none
» qualityAssuredBy string false none none
» qualityAssuredById integer(int32) false none none
» published string(date-time) false none none
» publishedBy string false none none
» publishedById integer(int32) false none none
» status string false none none

Enumerated Values

Property Value
status PENDING_REVIEW
status PENDING_QA
status PENDING_PUBLICATION
status PUBLISHED

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a summary

# You can also use wget
curl -X POST \
/opi/rest/summaries \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/summaries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/summaries', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/summaries',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /summaries

Body parameter

{
  "customerId": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Summary true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/summaries \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/summaries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/summaries', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/summaries',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /summaries

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Transition a summary status

# You can also use wget
curl -X POST \
/opi/rest/summaries/{summaryId}/transition \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/summaries/{summaryId}/transition',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "transitionTo": "PENDING_REVIEW",
  "transitionBy": "string",
  "transitionById": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/summaries/{summaryId}/transition',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/summaries/{summaryId}/transition", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/summaries/{summaryId}/transition', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/summaries/{summaryId}/transition',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /summaries/{summaryId}/transition

Body parameter

{
  "transitionTo": "PENDING_REVIEW",
  "transitionBy": "string",
  "transitionById": 0
}

Parameters

Name In Type Required Description
summaryId path integer(int32) true none
body body SummaryTransitionRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Swat schedules

Get a SWAT schedule (Deprecated: 2023-01-24)

# You can also use wget
curl -X GET \
/opi/rest/swat-schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/swat-schedules/{scheduleId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/swat-schedules/{scheduleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/swat-schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/swat-schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/swat-schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /swat-schedules/{scheduleId}

Parameters

Name In Type Required Description
scheduleId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "parent": 0,
  "customerId": 0,
  "name": "string",
  "executiveSummary": "string",
  "instance": true
}

Responses

Status Meaning Description Schema
default Default default response SwatSchedule

Get a list of SWAT schedules (Deprecated: 2023-01-24)

# You can also use wget
curl -X GET \
/opi/rest/swat-schedules \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/swat-schedules',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/swat-schedules',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/swat-schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/swat-schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/swat-schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /swat-schedules

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "parent": 0,
    "customerId": 0,
    "name": "string",
    "executiveSummary": "string",
    "instance": true
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SwatSchedule] false none none
» id integer(int64) false read-only The ID of the entry.
» parent integer(int64) false read-only none
» customerId integer(int64) false read-only The ID of the customer owning the entry.
» name string true none The name of the entry.
» executiveSummary string false read-only none
» instance boolean false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count (Deprecated: 2023-01-24)

# You can also use wget
curl -X HEAD \
/opi/rest/swat-schedules \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/swat-schedules',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/swat-schedules',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/swat-schedules", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/swat-schedules', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/swat-schedules',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /swat-schedules

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Tags

Get a tag by ID

# You can also use wget
curl -X GET \
/opi/rest/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/{tagId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/{tagId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /tags/{tagId}

Parameters

Name In Type Required Description
tagId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "key": "string",
  "value": "string",
  "inherited": true,
  "count": 0
}

Responses

Status Meaning Description Schema
default Default default response Tag

Delete a tag

# You can also use wget
curl -X DELETE \
/opi/rest/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /tags/{tagId}

Parameters

Name In Type Required Description
tagId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a tag

# You can also use wget
curl -X PATCH \
/opi/rest/tags/{tagId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/{tagId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "key": "string",
  "value": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/{tagId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /tags/{tagId}

Body parameter

{
  "customerId": 0,
  "key": "string",
  "value": "string"
}

Parameters

Name In Type Required Description
tagId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Tag true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of tags

# You can also use wget
curl -X GET \
/opi/rest/tags \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /tags

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "key": "string",
    "value": "string",
    "inherited": true,
    "count": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Tag] false none [The tags]
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» key string true none none
» value string false none none
» inherited boolean false read-only none
» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a tag

# You can also use wget
curl -X POST \
/opi/rest/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "key": "string",
  "value": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /tags

Body parameter

{
  "customerId": 0,
  "key": "string",
  "value": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Tag true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/tags/statistics \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/statistics',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/statistics',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/tags/statistics", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/tags/statistics', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/tags/statistics',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /tags/statistics

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get tag statistics by ID

# You can also use wget
curl -X GET \
/opi/rest/tags/statistics/{statisticId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/statistics/{statisticId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/statistics/{statisticId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/tags/statistics/{statisticId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/tags/statistics/{statisticId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/tags/statistics/{statisticId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /tags/statistics/{statisticId}

Parameters

Name In Type Required Description
statisticId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "key": "string",
  "value": "string",
  "statistics": {
    "accounts": 0,
    "assetGroups": 0,
    "assets": 0,
    "assetIdentifiers": 0,
    "eventSubscriptions": 0,
    "managedReports": 0,
    "scheduledReports": 0,
    "appstaks": 0,
    "complianceFindings": 0,
    "findings": 0,
    "scanConfigurations": 0,
    "workflows": 0,
    "dashboards": 0,
    "integrations": 0,
    "scanPolicies": 0,
    "viewTemplates": 0,
    "users": 0,
    "scanConfigurationSettings": 0,
    "scheduledReportSettings": 0,
    "resourceGroupSettings": 0
  }
}

Responses

Status Meaning Description Schema
default Default default response TagStatistic

Get a list of tag statistics

# You can also use wget
curl -X GET \
/opi/rest/tags/statistics \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/statistics',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/statistics',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/tags/statistics", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/tags/statistics', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/tags/statistics',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /tags/statistics

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "key": "string",
    "value": "string",
    "statistics": {
      "accounts": 0,
      "assetGroups": 0,
      "assets": 0,
      "assetIdentifiers": 0,
      "eventSubscriptions": 0,
      "managedReports": 0,
      "scheduledReports": 0,
      "appstaks": 0,
      "complianceFindings": 0,
      "findings": 0,
      "scanConfigurations": 0,
      "workflows": 0,
      "dashboards": 0,
      "integrations": 0,
      "scanPolicies": 0,
      "viewTemplates": 0,
      "users": 0,
      "scanConfigurationSettings": 0,
      "scheduledReportSettings": 0,
      "resourceGroupSettings": 0
    }
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [TagStatistic] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» key string false read-only none
» value string false read-only none
» statistics TagStatistic.Statistics false read-only none
»» accounts integer(int32) false none none
»» assetGroups integer(int32) false none none
»» assets integer(int32) false none none
»» assetIdentifiers integer(int32) false none none
»» eventSubscriptions integer(int32) false none none
»» managedReports integer(int32) false none none
»» scheduledReports integer(int32) false none none
»» appstaks integer(int32) false none none
»» complianceFindings integer(int32) false none none
»» findings integer(int32) false none none
»» scanConfigurations integer(int32) false none none
»» workflows integer(int32) false none none
»» dashboards integer(int32) false none none
»» integrations integer(int32) false none none
»» scanPolicies integer(int32) false none none
»» viewTemplates integer(int32) false none none
»» users integer(int32) false none none
»» scanConfigurationSettings integer(int32) false none none
»» scheduledReportSettings integer(int32) false none none
»» resourceGroupSettings integer(int32) false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Transform tags

# You can also use wget
curl -X POST \
/opi/rest/tags/transform \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/tags/transform',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "objects": {
    "accounts": true,
    "assetGroups": true,
    "assets": true,
    "assetIdentifiers": true,
    "eventSubscriptions": true,
    "managedReports": true,
    "scheduledReports": true,
    "appstaks": true,
    "complianceFindings": true,
    "findings": true,
    "scanConfigurations": true,
    "dashboards": true,
    "integrations": true,
    "scanPolicies": true,
    "viewTemplates": true,
    "users": true,
    "scanConfigurationSettings": true,
    "scheduledReportSettings": true,
    "resourceGroupSettings": true,
    "workflows": true
  },
  "from": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  },
  "to": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/tags/transform',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/tags/transform", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/tags/transform', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/tags/transform',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /tags/transform

Body parameter

{
  "objects": {
    "accounts": true,
    "assetGroups": true,
    "assets": true,
    "assetIdentifiers": true,
    "eventSubscriptions": true,
    "managedReports": true,
    "scheduledReports": true,
    "appstaks": true,
    "complianceFindings": true,
    "findings": true,
    "scanConfigurations": true,
    "dashboards": true,
    "integrations": true,
    "scanPolicies": true,
    "viewTemplates": true,
    "users": true,
    "scanConfigurationSettings": true,
    "scheduledReportSettings": true,
    "resourceGroupSettings": true,
    "workflows": true
  },
  "from": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  },
  "to": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  }
}

Parameters

Name In Type Required Description
body body TagsTransformation true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Terms

Accept terms

# You can also use wget
curl -X POST \
/opi/rest/terms/{termsId}/accept \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms/{termsId}/accept',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms/{termsId}/accept',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/terms/{termsId}/accept", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/terms/{termsId}/accept', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/terms/{termsId}/accept',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /terms/{termsId}/accept

Parameters

Name In Type Required Description
termsId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get terms

# You can also use wget
curl -X GET \
/opi/rest/terms/{termsId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms/{termsId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms/{termsId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/terms/{termsId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/terms/{termsId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/terms/{termsId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /terms/{termsId}

Parameters

Name In Type Required Description
termsId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "mainUserMustAccept": true,
  "allUsersMustAccept": true,
  "termsTemplateId": 0,
  "termsTemplateName": "string",
  "termsTemplateContent": "string",
  "customerName": "string"
}

Responses

Status Meaning Description Schema
default Default default response Terms

Delete terms

# You can also use wget
curl -X DELETE \
/opi/rest/terms/{termsId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms/{termsId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms/{termsId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/terms/{termsId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/terms/{termsId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/terms/{termsId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /terms/{termsId}

Parameters

Name In Type Required Description
termsId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of terms acceptances

# You can also use wget
curl -X GET \
/opi/rest/terms/acceptances \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms/acceptances',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms/acceptances',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/terms/acceptances", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/terms/acceptances', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/terms/acceptances',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /terms/acceptances

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "termsId": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [TermsAcceptance] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» termsId integer(int32) true none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get a list of terms

# You can also use wget
curl -X GET \
/opi/rest/terms \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/terms", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/terms', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/terms',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /terms

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "mainUserMustAccept": true,
    "allUsersMustAccept": true,
    "termsTemplateId": 0,
    "termsTemplateName": "string",
    "termsTemplateContent": "string",
    "customerName": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Terms] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» mainUserMustAccept boolean true none none
» allUsersMustAccept boolean true none none
» termsTemplateId integer(int32) true none none
» termsTemplateName string false read-only none
» termsTemplateContent string false read-only none
» customerName string false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create terms

# You can also use wget
curl -X POST \
/opi/rest/terms \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "mainUserMustAccept": true,
  "allUsersMustAccept": true,
  "termsTemplateId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/terms", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/terms', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/terms',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /terms

Body parameter

{
  "customerId": 0,
  "mainUserMustAccept": true,
  "allUsersMustAccept": true,
  "termsTemplateId": 0
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Terms true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/terms \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/terms", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/terms', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/terms',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /terms

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Terms templates

Get a terms template

# You can also use wget
curl -X GET \
/opi/rest/terms-templates/{termsTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms-templates/{termsTemplateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms-templates/{termsTemplateId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/terms-templates/{termsTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/terms-templates/{termsTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/terms-templates/{termsTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /terms-templates/{termsTemplateId}

Parameters

Name In Type Required Description
termsTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "name": "string",
  "content": "string",
  "id": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0
}

Responses

Status Meaning Description Schema
default Default default response TermsTemplate

Delete a terms template

# You can also use wget
curl -X DELETE \
/opi/rest/terms-templates/{termsTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms-templates/{termsTemplateId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms-templates/{termsTemplateId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/terms-templates/{termsTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/terms-templates/{termsTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/terms-templates/{termsTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /terms-templates/{termsTemplateId}

Parameters

Name In Type Required Description
termsTemplateId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of terms templates

# You can also use wget
curl -X GET \
/opi/rest/terms-templates \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms-templates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms-templates',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/terms-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/terms-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/terms-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /terms-templates

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "name": "string",
    "content": "string",
    "id": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [TermsTemplate] false none none
» name string true none The name of the entry.
» content string true none none
» id integer(int32) false read-only The ID of the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a terms template

# You can also use wget
curl -X POST \
/opi/rest/terms-templates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms-templates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "content": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms-templates',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/terms-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/terms-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/terms-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /terms-templates

Body parameter

{
  "name": "string",
  "content": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body TermsTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/terms-templates \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/terms-templates',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/terms-templates',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/terms-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/terms-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/terms-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /terms-templates

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Usage stats

Get cyr3con stats

# You can also use wget
curl -X GET \
/opi/rest/usage-stats/cyr3con \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/usage-stats/cyr3con',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/usage-stats/cyr3con',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/usage-stats/cyr3con", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/usage-stats/cyr3con', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/usage-stats/cyr3con',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /usage-stats/cyr3con

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get usage stats by ID

# You can also use wget
curl -X GET \
/opi/rest/usage-stats/{usageStatsId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/usage-stats/{usageStatsId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/usage-stats/{usageStatsId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/usage-stats/{usageStatsId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/usage-stats/{usageStatsId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/usage-stats/{usageStatsId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /usage-stats/{usageStatsId}

Parameters

Name In Type Required Description
usageStatsId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "organization": "string",
  "salesAccountId": "string",
  "statsUpdated": "2019-08-24T14:15:22Z",
  "applianceStatsUpdated": "2019-08-24T14:15:22Z",
  "scaleConfigurations": 0,
  "scoutConfigurations": 0,
  "cloudsecConfigurations": 0,
  "applianceScaleConfigurations": 0,
  "users": 0,
  "lastLogin": "2019-08-24T14:15:22Z",
  "applianceUsers": 0,
  "applianceLastLogin": "2019-08-24T14:15:22Z",
  "findingsCritical": 0,
  "findingsHigh": 0,
  "findingsMedium": 0,
  "findingsLow": 0,
  "findingsRecommendations": 0,
  "applianceFindingsCritical": 0,
  "applianceFindingsHigh": 0,
  "applianceFindingsMedium": 0,
  "applianceFindingsLow": 0,
  "applianceFindingsRecommendations": 0,
  "scans": 0,
  "lastScan": "2019-08-24T14:15:22Z",
  "applianceScans": 0,
  "applianceLastScan": "2019-08-24T14:15:22Z",
  "accountsAws": 0,
  "accountsGcp": 0,
  "accountsAzure": 0,
  "accountsVsphere": 0,
  "accountsBasic": 0,
  "accountsWeb": 0,
  "applianceAccountsAws": 0,
  "applianceAccountsGcp": 0,
  "applianceAccountsAzure": 0,
  "applianceAccountsVsphere": 0,
  "applianceAccountsBasic": 0,
  "applianceAccountsWeb": 0,
  "cyr3conAssets": 0,
  "cyr3conApplianceAssets": 0,
  "agents": 0,
  "agentsScanned": 0,
  "agentsOutdated": 0,
  "applianceAgents": 0,
  "applianceAgentsScanned": 0,
  "applianceAgentsOutdated": 0
}

Responses

Status Meaning Description Schema
default Default default response UsageStats

Get a list of usage stats

# You can also use wget
curl -X GET \
/opi/rest/usage-stats \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/usage-stats',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/usage-stats',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/usage-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/usage-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/usage-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /usage-stats

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "customerName": "string",
    "organization": "string",
    "salesAccountId": "string",
    "statsUpdated": "2019-08-24T14:15:22Z",
    "applianceStatsUpdated": "2019-08-24T14:15:22Z",
    "scaleConfigurations": 0,
    "scoutConfigurations": 0,
    "cloudsecConfigurations": 0,
    "applianceScaleConfigurations": 0,
    "users": 0,
    "lastLogin": "2019-08-24T14:15:22Z",
    "applianceUsers": 0,
    "applianceLastLogin": "2019-08-24T14:15:22Z",
    "findingsCritical": 0,
    "findingsHigh": 0,
    "findingsMedium": 0,
    "findingsLow": 0,
    "findingsRecommendations": 0,
    "applianceFindingsCritical": 0,
    "applianceFindingsHigh": 0,
    "applianceFindingsMedium": 0,
    "applianceFindingsLow": 0,
    "applianceFindingsRecommendations": 0,
    "scans": 0,
    "lastScan": "2019-08-24T14:15:22Z",
    "applianceScans": 0,
    "applianceLastScan": "2019-08-24T14:15:22Z",
    "accountsAws": 0,
    "accountsGcp": 0,
    "accountsAzure": 0,
    "accountsVsphere": 0,
    "accountsBasic": 0,
    "accountsWeb": 0,
    "applianceAccountsAws": 0,
    "applianceAccountsGcp": 0,
    "applianceAccountsAzure": 0,
    "applianceAccountsVsphere": 0,
    "applianceAccountsBasic": 0,
    "applianceAccountsWeb": 0,
    "cyr3conAssets": 0,
    "cyr3conApplianceAssets": 0,
    "agents": 0,
    "agentsScanned": 0,
    "agentsOutdated": 0,
    "applianceAgents": 0,
    "applianceAgentsScanned": 0,
    "applianceAgentsOutdated": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [UsageStats] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» customerName string false read-only none
» organization string false read-only none
» salesAccountId string false read-only none
» statsUpdated string(date-time) false none none
» applianceStatsUpdated string(date-time) false none none
» scaleConfigurations integer(int32) false none none
» scoutConfigurations integer(int32) false none none
» cloudsecConfigurations integer(int32) false none none
» applianceScaleConfigurations integer(int32) false none none
» users integer(int32) false none none
» lastLogin string(date-time) false none none
» applianceUsers integer(int32) false none none
» applianceLastLogin string(date-time) false none none
» findingsCritical integer(int32) false none none
» findingsHigh integer(int32) false none none
» findingsMedium integer(int32) false none none
» findingsLow integer(int32) false none none
» findingsRecommendations integer(int32) false none none
» applianceFindingsCritical integer(int32) false none none
» applianceFindingsHigh integer(int32) false none none
» applianceFindingsMedium integer(int32) false none none
» applianceFindingsLow integer(int32) false none none
» applianceFindingsRecommendations integer(int32) false none none
» scans integer(int32) false none none
» lastScan string(date-time) false none none
» applianceScans integer(int32) false none none
» applianceLastScan string(date-time) false none none
» accountsAws integer(int32) false none none
» accountsGcp integer(int32) false none none
» accountsAzure integer(int32) false none none
» accountsVsphere integer(int32) false none none
» accountsBasic integer(int32) false none none
» accountsWeb integer(int32) false none none
» applianceAccountsAws integer(int32) false none none
» applianceAccountsGcp integer(int32) false none none
» applianceAccountsAzure integer(int32) false none none
» applianceAccountsVsphere integer(int32) false none none
» applianceAccountsBasic integer(int32) false none none
» applianceAccountsWeb integer(int32) false none none
» cyr3conAssets integer(int32) false none none
» cyr3conApplianceAssets integer(int32) false none none
» agents integer(int32) false none none
» agentsScanned integer(int32) false none none
» agentsOutdated integer(int32) false none none
» applianceAgents integer(int32) false none none
» applianceAgentsScanned integer(int32) false none none
» applianceAgentsOutdated integer(int32) false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/usage-stats \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/usage-stats',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/usage-stats',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/usage-stats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/usage-stats', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/usage-stats',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /usage-stats

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

User events

Get a user event by ID

# You can also use wget
curl -X GET \
/opi/rest/user-events/{userEventId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events/{userEventId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events/{userEventId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-events/{userEventId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-events/{userEventId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-events/{userEventId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-events/{userEventId}

Parameters

Name In Type Required Description
userEventId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}

Responses

Status Meaning Description Schema
default Default default response Logging

Delete a user event

# You can also use wget
curl -X DELETE \
/opi/rest/user-events/{userEventId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events/{userEventId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events/{userEventId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/user-events/{userEventId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/user-events/{userEventId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/user-events/{userEventId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /user-events/{userEventId}

Parameters

Name In Type Required Description
userEventId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a user event

# You can also use wget
curl -X PATCH \
/opi/rest/user-events/{userEventId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events/{userEventId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events/{userEventId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/user-events/{userEventId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/user-events/{userEventId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/user-events/{userEventId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /user-events/{userEventId}

Body parameter

{
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}

Parameters

Name In Type Required Description
userEventId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Logging true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a simplified list of user events

# You can also use wget
curl -X GET \
/opi/rest/user-events/simplified \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events/simplified',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events/simplified',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-events/simplified", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-events/simplified', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-events/simplified',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-events/simplified

The above code returns response like this:

default Response

[
  {
    "name": "string",
    "uiNotification": true,
    "emailNotification": true,
    "emailRecipient": "string",
    "eventType": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [SimplifiedUserEvent] false none none
» name string false none The name of the entry.
» uiNotification boolean false none none
» emailNotification boolean false none none
» emailRecipient string false none none
» eventType string false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Partially update user events via simplified data

# You can also use wget
curl -X PATCH \
/opi/rest/user-events/simplified \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events/simplified',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[
  {
    "name": "string",
    "uiNotification": true,
    "emailNotification": true,
    "emailRecipient": "string",
    "eventType": "string"
  }
]';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events/simplified',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/user-events/simplified", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/user-events/simplified', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/user-events/simplified',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /user-events/simplified

Body parameter

[
  {
    "name": "string",
    "uiNotification": true,
    "emailNotification": true,
    "emailRecipient": "string",
    "eventType": "string"
  }
]

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body SimplifiedUserEvent true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of user events

# You can also use wget
curl -X GET \
/opi/rest/user-events \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-events", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-events', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-events',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-events

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "logType": 0,
    "event": 0,
    "recipient": "string",
    "eventName": "string",
    "emailEncryptionKey": "string",
    "uiSource": "EXTJS"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Logging] false none none
» id integer(int64) false read-only The ID of the entry.
» logType integer(int32) false none none
» event integer(int64) false none none
» recipient string false none none
» eventName string false none none
» emailEncryptionKey string false none none
» uiSource string false none none

Enumerated Values

Property Value
uiSource EXTJS
uiSource PORTAL
uiSource UNIFIED_VIEW

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a user event

# You can also use wget
curl -X POST \
/opi/rest/user-events \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/user-events", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/user-events', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/user-events',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /user-events

Body parameter

{
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Logging true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/user-events \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-events',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-events',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/user-events", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/user-events', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/user-events',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /user-events

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

User role permissions

Get a user role permission

# You can also use wget
curl -X GET \
/opi/rest/user-role-permissions/{userRolePermissionId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-role-permissions/{userRolePermissionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-role-permissions/{userRolePermissionId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-role-permissions/{userRolePermissionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-role-permissions/{userRolePermissionId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-role-permissions/{userRolePermissionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-role-permissions/{userRolePermissionId}

Parameters

Name In Type Required Description
userRolePermissionId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "name": "string"
}

Responses

Status Meaning Description Schema
default Default default response UserRolePermission

Get a list of user role permissions

# You can also use wget
curl -X GET \
/opi/rest/user-role-permissions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-role-permissions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-role-permissions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-role-permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-role-permissions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-role-permissions',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-role-permissions

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [UserRolePermission] false none none
» id integer(int32) false read-only The ID of the entry.
» name string false read-only The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/user-role-permissions \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-role-permissions',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-role-permissions',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/user-role-permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/user-role-permissions', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/user-role-permissions',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /user-role-permissions

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

User roles

Get a user role

# You can also use wget
curl -X GET \
/opi/rest/user-roles/{userRoleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles/{userRoleId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles/{userRoleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-roles/{userRoleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-roles/{userRoleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-roles/{userRoleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-roles/{userRoleId}

Parameters

Name In Type Required Description
userRoleId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "permissionIds": [
    0
  ]
}

Responses

Status Meaning Description Schema
default Default default response UserRole

Delete a user role

# You can also use wget
curl -X DELETE \
/opi/rest/user-roles/{userRoleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles/{userRoleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles/{userRoleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/user-roles/{userRoleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/user-roles/{userRoleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/user-roles/{userRoleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /user-roles/{userRoleId}

Parameters

Name In Type Required Description
userRoleId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a user role

# You can also use wget
curl -X PATCH \
/opi/rest/user-roles/{userRoleId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles/{userRoleId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "permissionIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles/{userRoleId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/user-roles/{userRoleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/user-roles/{userRoleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/user-roles/{userRoleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /user-roles/{userRoleId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "permissionIds": [
    0
  ]
}

Parameters

Name In Type Required Description
userRoleId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body UserRole true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of user roles

# You can also use wget
curl -X GET \
/opi/rest/user-roles \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/user-roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/user-roles', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/user-roles',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /user-roles

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "system": true,
    "permissionIds": [
      0
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [UserRole] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» system boolean false read-only Set to true when system role
» permissionIds [integer] false none The user role permission ids

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a user role

# You can also use wget
curl -X POST \
/opi/rest/user-roles \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "permissionIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/user-roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/user-roles', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/user-roles',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /user-roles

Body parameter

{
  "customerId": 0,
  "name": "string",
  "permissionIds": [
    0
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body UserRole true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/user-roles \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/user-roles',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/user-roles',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/user-roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/user-roles', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/user-roles',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /user-roles

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Users

Change current users password; if current user is a sub-user, redirect to /sub-users/me/change-password

# You can also use wget
curl -X POST \
/opi/rest/users/me/change-password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/me/change-password',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "password": "string",
  "oldPassword": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/me/change-password',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/users/me/change-password", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/users/me/change-password', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/users/me/change-password',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /users/me/change-password

Body parameter

{
  "password": "string",
  "oldPassword": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ChangePasswordRequest true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/users/{userId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/{userId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/{userId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/users/{userId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/users/{userId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/users/{userId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /users/{userId}/tags/{tagId}

Name In Type Required Description
userId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/users/{userId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/{userId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/{userId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/users/{userId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/users/{userId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/users/{userId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /users/{userId}/tags/{tagId}

Name In Type Required Description
userId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get current user; if current user is a sub-user, redirect to /sub-users/me

# You can also use wget
curl -X GET \
/opi/rest/users/me \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/me',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/me',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/users/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/users/me', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/users/me',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /users/me

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update current user; if current user is a sub-user, redirect to /sub-users/me

# You can also use wget
curl -X PATCH \
/opi/rest/users/me \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/me',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "timezone": "string",
  "portalPreferences": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "language": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/me',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/users/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/users/me', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/users/me',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /users/me

Body parameter

{
  "timezone": "string",
  "portalPreferences": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "language": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body User true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a user

# You can also use wget
curl -X GET \
/opi/rest/users/{userId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/{userId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/{userId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/users/{userId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/users/{userId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/users/{userId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /users/{userId}

Parameters

Name In Type Required Description
userId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "timezone": "string",
  "portalPreferences": "string",
  "customerId": 0,
  "id": 0,
  "company": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "lastLogonIp": "string",
  "lastLogonDate": "2019-08-24T14:15:22Z",
  "logons": 0,
  "language": "string",
  "remoteSupport": true,
  "roles": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response User

Partially update a user

# You can also use wget
curl -X PATCH \
/opi/rest/users/{userId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/{userId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "timezone": "string",
  "portalPreferences": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "language": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/{userId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/users/{userId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/users/{userId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/users/{userId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /users/{userId}

Body parameter

{
  "timezone": "string",
  "portalPreferences": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "language": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string"
}

Parameters

Name In Type Required Description
userId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body User true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of users

# You can also use wget
curl -X GET \
/opi/rest/users \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/users', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/users',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /users

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "timezone": "string",
    "portalPreferences": "string",
    "customerId": 0,
    "id": 0,
    "company": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "username": "string",
    "emailEncryptionKey": "string",
    "sshPublicKey": "string",
    "mobilePhone": "string",
    "countryCode": "string",
    "stateCode": "string",
    "lastLogonIp": "string",
    "lastLogonDate": "2019-08-24T14:15:22Z",
    "logons": 0,
    "language": "string",
    "remoteSupport": true,
    "roles": "string",
    "snapshotSubscriptions": 0,
    "snapshotSubscriptionsRemaining": 0,
    "swatSubscriptions": 0,
    "swatSubscriptionsRemaining": 0,
    "customerSuccessManagerEmail": "string",
    "accountManagerEmail": "string",
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [User] false none none
» timezone string false none The user time zone
» portalPreferences string false none The user portal preferences
» customerId integer(int32) false read-only The ID of the customer owning the entry.
» id integer(int64) false read-only The ID of the entry.
» company string false read-only The user company name
» firstName string true none The user first name
» lastName string true none The user last name
» email string true none The user email address
» username string true none The user name
» emailEncryptionKey string false none The user public key for email encryption
» sshPublicKey string false none The user ssh public key
» mobilePhone string false none The user mobile phone number
» countryCode string false none The user country code
» stateCode string false none The user state code
» lastLogonIp string false read-only The user last logon ip address
» lastLogonDate string(date-time) false read-only The user last logon date
» logons integer(int64) false read-only The user logon numbers
» language string false none The user language
» remoteSupport boolean false read-only The user remote support status
» roles string false read-only The user's roles
» snapshotSubscriptions integer(int64) false none The snapshot subscriptions
» snapshotSubscriptionsRemaining integer(int64) false none The remaining snapshot subscriptions
» swatSubscriptions integer(int64) false none The SWAT subscriptions
» swatSubscriptionsRemaining integer(int64) false none The remaining SWAT subscriptions
» customerSuccessManagerEmail string false none The email to the customer success manager responsible for this customer
» accountManagerEmail string false none The email to the account manager responsible for this customer
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/users \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/users', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/users',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /users

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/users/{userId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/users/{userId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/users/{userId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/users/{userId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/users/{userId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/users/{userId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /users/{userId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
userId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

View template groups

Get view template group

# You can also use wget
curl -X GET \
/opi/rest/view-template-groups/{viewTemplateGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups/{viewTemplateGroupId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/view-template-groups/{viewTemplateGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/view-template-groups/{viewTemplateGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /view-template-groups/{viewTemplateGroupId}

Parameters

Name In Type Required Description
viewTemplateGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}

Responses

Status Meaning Description Schema
default Default default response ViewTemplateGroup

Delete view template group

# You can also use wget
curl -X DELETE \
/opi/rest/view-template-groups/{viewTemplateGroupId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups/{viewTemplateGroupId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/view-template-groups/{viewTemplateGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/view-template-groups/{viewTemplateGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /view-template-groups/{viewTemplateGroupId}

Parameters

Name In Type Required Description
viewTemplateGroupId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a view template group

# You can also use wget
curl -X PATCH \
/opi/rest/view-template-groups/{viewTemplateGroupId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups/{viewTemplateGroupId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/view-template-groups/{viewTemplateGroupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/view-template-groups/{viewTemplateGroupId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/view-template-groups/{viewTemplateGroupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /view-template-groups/{viewTemplateGroupId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}

Parameters

Name In Type Required Description
viewTemplateGroupId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ViewTemplateGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of view template groups

# You can also use wget
curl -X GET \
/opi/rest/view-template-groups \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/view-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/view-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/view-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /view-template-groups

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "parentId": 0,
    "type": "ASSET_GROUPS"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ViewTemplateGroup] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» parentId integer(int32) false none The ID of the parent entry.
» type string true none none

Enumerated Values

Property Value
type ASSET_GROUPS
type ASSETS
type SCAN_CONFIGURATIONS
type SCHEDULES
type SCANS
type FINDINGS
type REPORTS
type USERS
type ACCOUNTS
type AUDITS
type SCHEDULED_REPORTS
type MANAGED_REPORTS
type INTEGRATIONS
type COMPLIANCE
type TAGS
type VIEW_TEMPLATES
type SCAN_POLICIES
type FINDING_SOLUTIONS
type FINDING_DELTA
type AGENTS
type CONSUMPTION
type WORKFLOWS
type CHECKS
type FINDING_TEMPLATES
type MATCHES

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a view template group

# You can also use wget
curl -X POST \
/opi/rest/view-template-groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/view-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/view-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/view-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /view-template-groups

Body parameter

{
  "customerId": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ViewTemplateGroup true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/view-template-groups \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-template-groups',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-template-groups',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/view-template-groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/view-template-groups', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/view-template-groups',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /view-template-groups

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

View templates

Get a list of view templates

# You can also use wget
curl -X GET \
/opi/rest/view-templates \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/view-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/view-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/view-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /view-templates

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "type": "ASSET_GROUPS",
    "sorting": "string",
    "fields": "string",
    "columnsWidth": "string",
    "system": true,
    "isDefault": true,
    "groupId": 0,
    "filters": [
      {
        "field": "string",
        "comparison": "string",
        "value": "string"
      }
    ],
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ViewTemplate] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» type string true none none
» sorting string false none none
» fields string false none none
» columnsWidth string false none none
» system boolean false read-only none
» isDefault boolean false none none
» groupId integer(int32) false none The view template group id
» filters [ViewTemplate.Filter] false none none
»» field string true none none
»» comparison string true none none
»» value string true none none
» tags [Tag] false none [The tags]
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

Enumerated Values

Property Value
type ASSET_GROUPS
type ASSETS
type SCAN_CONFIGURATIONS
type SCHEDULES
type SCANS
type FINDINGS
type REPORTS
type USERS
type ACCOUNTS
type AUDITS
type SCHEDULED_REPORTS
type MANAGED_REPORTS
type INTEGRATIONS
type COMPLIANCE
type TAGS
type VIEW_TEMPLATES
type SCAN_POLICIES
type FINDING_SOLUTIONS
type FINDING_DELTA
type AGENTS
type CONSUMPTION
type WORKFLOWS
type CHECKS
type FINDING_TEMPLATES
type MATCHES

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a view template

# You can also use wget
curl -X POST \
/opi/rest/view-templates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "customerId": 0,
      "key": "string",
      "value": "string"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/view-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/view-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/view-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /view-templates

Body parameter

{
  "customerId": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "customerId": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ViewTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/view-templates \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/view-templates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/view-templates', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/view-templates',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /view-templates

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get view template by ID

# You can also use wget
curl -X GET \
/opi/rest/view-templates/{viewTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/view-templates/{viewTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/view-templates/{viewTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/view-templates/{viewTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /view-templates/{viewTemplateId}

Parameters

Name In Type Required Description
viewTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "system": true,
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response ViewTemplate

Delete a view template

# You can also use wget
curl -X DELETE \
/opi/rest/view-templates/{viewTemplateId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/view-templates/{viewTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/view-templates/{viewTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/view-templates/{viewTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /view-templates/{viewTemplateId}

Parameters

Name In Type Required Description
viewTemplateId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a view template

# You can also use wget
curl -X PATCH \
/opi/rest/view-templates/{viewTemplateId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "customerId": 0,
      "key": "string",
      "value": "string"
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/view-templates/{viewTemplateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/view-templates/{viewTemplateId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/view-templates/{viewTemplateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /view-templates/{viewTemplateId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "customerId": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Parameters

Name In Type Required Description
viewTemplateId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body ViewTemplate true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/view-templates/{viewTemplateId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /view-templates/{viewTemplateId}/tags/{tagId}

Name In Type Required Description
viewTemplateId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/view-templates/{viewTemplateId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/view-templates/{viewTemplateId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /view-templates/{viewTemplateId}/tags/{tagId}

Name In Type Required Description
viewTemplateId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/view-templates/{viewTemplateId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/view-templates/{viewTemplateId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/view-templates/{viewTemplateId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/view-templates/{viewTemplateId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/view-templates/{viewTemplateId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/view-templates/{viewTemplateId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /view-templates/{viewTemplateId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
viewTemplateId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Webfindings

Unaccept finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webfindings/{findingId}/unaccept \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/unaccept',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/unaccept',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webfindings/{findingId}/unaccept", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webfindings/{findingId}/unaccept', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webfindings/{findingId}/unaccept',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webfindings/{findingId}/unaccept

Parameters

Name In Type Required Description
findingId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a comment for a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/comments/{commentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/comments/{commentId}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
commentId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "comment": "string",
  "findingId": 0,
  "created": "2019-08-24T14:15:22Z",
  "parentCommentId": 0,
  "createdBy": "string"
}

Responses

Status Meaning Description Schema
default Default default response WebFindingComment

Delete a comment for a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X DELETE \
/opi/rest/webfindings/{findingId}/comments/{commentId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/comments/{commentId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/webfindings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/webfindings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /webfindings/{findingId}/comments/{commentId}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
commentId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Update a comment for a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X PATCH \
/opi/rest/webfindings/{findingId}/comments/{commentId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "riskLevel": "Initial"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/comments/{commentId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/webfindings/{findingId}/comments/{commentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/webfindings/{findingId}/comments/{commentId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/webfindings/{findingId}/comments/{commentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /webfindings/{findingId}/comments/{commentId}

Body parameter

{
  "riskLevel": "Initial"
}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
commentId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body WebFinding true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of comments for a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/comments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/comments',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/comments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/comments

Parameters

Name In Type Required Description
findingId path integer(int64) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "comment": "string",
    "findingId": 0,
    "created": "2019-08-24T14:15:22Z",
    "parentCommentId": 0,
    "createdBy": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [WebFindingComment] false none none
» id integer(int64) false read-only The ID of the entry.
» comment string true none none
» findingId integer(int64) false read-only none
» created string(date-time) false read-only The timestamp when the entry was created.
» parentCommentId integer(int64) false none none
» createdBy string false read-only The name of the user who created the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Submit a comment for a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webfindings/{findingId}/comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "comment": "string",
  "parentCommentId": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/comments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webfindings/{findingId}/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webfindings/{findingId}/comments', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webfindings/{findingId}/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webfindings/{findingId}/comments

Body parameter

{
  "comment": "string",
  "parentCommentId": 0
}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body WebFindingComment true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Download a file attached to a finding using a token (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/files/{fileId}/download?token=string \
  -H 'Accept: */*'

var headers = {
  'Accept':'*/*'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/files/{fileId}/download',
  method: 'get',
  data: '?token=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*'

};

fetch('/opi/rest/webfindings/{findingId}/files/{fileId}/download?token=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/files/{fileId}/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/opi/rest/webfindings/{findingId}/files/{fileId}/download', params={
  'token': 'string'
}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/files/{fileId}/download',
  params: {
  'token' => 'string'
}, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/files/{fileId}/download

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fileId path integer(int64) true none
token query string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get the files attached to a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/files \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/files',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/files',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/files", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}/files', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/files',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/files

Parameters

Name In Type Required Description
findingId path integer(int64) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "findingId": 0,
    "type": 0,
    "name": "string",
    "content": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [FindingFile] false none none
» id integer(int64) false read-only The ID of the entry.
» findingId integer(int64) false read-only none
» type integer(int32) false none none
» name string false none The name of the entry.
» content string false none none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get the token for downloading a file attached to a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/files/{fileId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/files/{fileId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/files/{fileId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/files/{fileId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}/files/{fileId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/files/{fileId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/files/{fileId}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fileId path integer(int64) true none

The above code returns response like this:

default Response

{
  "token": "string",
  "expire": "2019-08-24T14:15:22Z",
  "fileId": 0
}

Responses

Status Meaning Description Schema
default Default default response FileDownloadToken

Get a finding by ID (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "scanId": 0,
  "scheduleId": 0,
  "swatAppId": 0,
  "swatAppName": "string",
  "checkId": 0,
  "source": "Unknown",
  "created": "2019-08-24T14:15:22Z",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "cvssScore": 0,
  "cvssV3Score": 0,
  "nvdCvssScore": 0,
  "cvssVector": "string",
  "cvssV3Vector": "string",
  "nvdCvssVector": "string",
  "sansTop25": "string",
  "cve": "string",
  "osvdb": "string",
  "owasp2004": "string",
  "owasp2007": "string",
  "owasp2010": "string",
  "owasp2013": "string",
  "owasp2017": "string",
  "cwe": "string",
  "hasExploits": true,
  "recreationFlow": "string",
  "impact": "string",
  "riskLevel": "Initial",
  "originalRiskLevel": "Initial",
  "checkCreated": "2019-08-24T14:15:22Z",
  "acceptedBy": "string",
  "accepted": "2019-08-24T14:15:22Z",
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string",
  "persistentFalsePositive": true,
  "falsePositiveBy": "string",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "name": "string",
  "hostname": "string",
  "port": 0,
  "protocol": 0,
  "serviceName": "string",
  "productName": "string",
  "productUrl": "string",
  "description": "string",
  "cdata": "string",
  "vulnerabilityType": "Unknown",
  "fixed": true,
  "solutionType": 0,
  "solutionTitle": "string",
  "solution": "string",
  "bugTraq": [
    0
  ]
}

Responses

Status Meaning Description Schema
default Default default response WebFinding

Partially update a finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X PATCH \
/opi/rest/webfindings/{findingId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "riskLevel": "Initial"
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/webfindings/{findingId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/webfindings/{findingId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/webfindings/{findingId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /webfindings/{findingId}

Body parameter

{
  "riskLevel": "Initial"
}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body WebFinding true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of findings (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "scanId": 0,
    "scheduleId": 0,
    "swatAppId": 0,
    "swatAppName": "string",
    "checkId": 0,
    "source": "Unknown",
    "created": "2019-08-24T14:15:22Z",
    "firstSeen": "2019-08-24T14:15:22Z",
    "lastSeen": "2019-08-24T14:15:22Z",
    "cvssScore": 0,
    "cvssV3Score": 0,
    "nvdCvssScore": 0,
    "cvssVector": "string",
    "cvssV3Vector": "string",
    "nvdCvssVector": "string",
    "sansTop25": "string",
    "cve": "string",
    "osvdb": "string",
    "owasp2004": "string",
    "owasp2007": "string",
    "owasp2010": "string",
    "owasp2013": "string",
    "owasp2017": "string",
    "cwe": "string",
    "hasExploits": true,
    "recreationFlow": "string",
    "impact": "string",
    "riskLevel": "Initial",
    "originalRiskLevel": "Initial",
    "checkCreated": "2019-08-24T14:15:22Z",
    "acceptedBy": "string",
    "accepted": "2019-08-24T14:15:22Z",
    "acceptedUntil": "2019-08-24T14:15:22Z",
    "acceptedComment": "string",
    "persistentFalsePositive": true,
    "falsePositiveBy": "string",
    "falsePositive": "2019-08-24T14:15:22Z",
    "falsePositiveComment": "string",
    "name": "string",
    "hostname": "string",
    "port": 0,
    "protocol": 0,
    "serviceName": "string",
    "productName": "string",
    "productUrl": "string",
    "description": "string",
    "cdata": "string",
    "vulnerabilityType": "Unknown",
    "fixed": true,
    "solutionType": 0,
    "solutionTitle": "string",
    "solution": "string",
    "bugTraq": [
      0
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [WebFinding] false none none
» id integer(int64) false read-only The ID of the entry.
» scanId integer(int64) false read-only none
» scheduleId integer(int64) false read-only none
» swatAppId integer(int64) false read-only none
» swatAppName string false read-only none
» checkId integer(int64) false read-only none
» source string false read-only none
» created string(date-time) false read-only The timestamp when the entry was created.
» firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
» lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
» cvssScore number(double) false read-only none
» cvssV3Score number(double) false read-only none
» nvdCvssScore number(double) false read-only none
» cvssVector string false read-only none
» cvssV3Vector string false read-only none
» nvdCvssVector string false read-only none
» sansTop25 string false read-only none
» cve string false read-only none
» osvdb string false read-only none
» owasp2004 string false read-only An array of OWASP Top 10 2004 classifications of the entry.
» owasp2007 string false read-only An array of OWASP Top 10 2007 classifications of the entry.
» owasp2010 string false read-only An array of OWASP Top 10 2010 classifications of the entry.
» owasp2013 string false read-only An array of OWASP Top 10 2013 classifications of the entry.
» owasp2017 string false read-only An array of OWASP Top 10 2017 classifications of the entry.
» cwe string false read-only CWE classification of the entry.
» hasExploits boolean false read-only none
» recreationFlow string false read-only none
» impact string false read-only none
» riskLevel string false none set to Initial to restore original risk level
» originalRiskLevel string false read-only none
» checkCreated string(date-time) false read-only none
» acceptedBy string false read-only The name of the user who accepted the risk.
» accepted string(date-time) false read-only The date when the finding was marked as accepted risk.
» acceptedUntil string(date-time) false read-only The date when the risk acceptance will expire.
» acceptedComment string false read-only none
» persistentFalsePositive boolean false read-only none
» falsePositiveBy string false read-only none
» falsePositive string(date-time) false read-only none
» falsePositiveComment string false read-only none
» name string false read-only The name of the entry.
» hostname string false read-only none
» port integer(int64) false read-only none
» protocol integer(int64) false read-only none
» serviceName string false read-only none
» productName string false read-only none
» productUrl string false read-only none
» description string false read-only Description of the entry.
» cdata string false read-only none
» vulnerabilityType string false read-only none
» fixed boolean false read-only none
» solutionType integer(int32) false read-only none
» solutionTitle string false read-only none
» solution string false read-only none
» bugTraq [integer] false read-only An array of Bugtraq reference IDs.

Enumerated Values

Property Value
source Unknown
source PortScan
source Normal
source Unsafe
source Pci
source PciPreview
source TestCredentials
source Was
source Appsec Scale
source SWAT
source Docker Discovery
source DockerScan
source Cloudsec
source NetworkDiscovery
source CloudDiscovery
source Netsec
riskLevel Initial
riskLevel Recommendation
riskLevel Low
riskLevel Medium
riskLevel High
riskLevel Critical
originalRiskLevel Initial
originalRiskLevel Recommendation
originalRiskLevel Low
originalRiskLevel Medium
originalRiskLevel High
originalRiskLevel Critical
vulnerabilityType Unknown
vulnerabilityType Dos
vulnerabilityType CodeExecution
vulnerabilityType Overflow
vulnerabilityType MemoryCorruption
vulnerabilityType SqlInjection
vulnerabilityType XSS
vulnerabilityType DirectoryTraversal
vulnerabilityType HttpResponseSplitting
vulnerabilityType Bypass
vulnerabilityType GainInformation
vulnerabilityType GainPrivileges
vulnerabilityType CSRF
vulnerabilityType FileInclusion
vulnerabilityType Information

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get header with count (Deprecated: 2019-05-21)

# You can also use wget
curl -X HEAD \
/opi/rest/webfindings \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/webfindings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/webfindings', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/webfindings',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /webfindings

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Get gathered information for a web finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webfindings/{findingId}/web-information \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/web-information',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/web-information',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webfindings/{findingId}/web-information", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webfindings/{findingId}/web-information', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webfindings/{findingId}/web-information',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webfindings/{findingId}/web-information

Parameters

Name In Type Required Description
findingId path integer(int64) true none
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "userId": 0,
    "url": "string",
    "method": "string",
    "post": "string",
    "requestHeaders": "string",
    "responseHeaders": "string",
    "content": "string",
    "path": 0,
    "time": "string",
    "data": [
      "string"
    ],
    "match": "string",
    "matchStart": 0,
    "matchLength": 0
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [WebFindingInformation] false none none
» id integer(int64) false read-only The ID of the entry.
» userId integer(int64) false read-only none
» url string false read-only none
» method string false read-only none
» post string false read-only none
» requestHeaders string false read-only none
» responseHeaders string false read-only none
» content string false read-only none
» path integer(int64) false read-only none
» time string false read-only none
» data [string] false read-only none
» match string false read-only none
» matchStart integer(int32) false read-only none
» matchLength integer(int32) false read-only none

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Mark finding as false positive (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webfindings/{findingId}/mark-false-positive \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/mark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "persistentFalsePositive": true,
  "falsePositiveComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/mark-false-positive',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webfindings/{findingId}/mark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webfindings/{findingId}/mark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webfindings/{findingId}/mark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webfindings/{findingId}/mark-false-positive

Body parameter

{
  "persistentFalsePositive": true,
  "falsePositiveComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
body body WebFindingFalsePositive true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Accept finding (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webfindings/{findingId}/accept \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/accept',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/accept',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webfindings/{findingId}/accept", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webfindings/{findingId}/accept', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webfindings/{findingId}/accept',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webfindings/{findingId}/accept

Body parameter

{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}

Parameters

Name In Type Required Description
findingId path integer(int64) true none
body body WebFindingAccept true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Unmark finding as false positive (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webfindings/{findingId}/unmark-false-positive \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webfindings/{findingId}/unmark-false-positive',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webfindings/{findingId}/unmark-false-positive',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webfindings/{findingId}/unmark-false-positive", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webfindings/{findingId}/unmark-false-positive', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webfindings/{findingId}/unmark-false-positive',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webfindings/{findingId}/unmark-false-positive

Parameters

Name In Type Required Description
findingId path integer(int64) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Webreports

Get a report cache entry and generate a token for downloading the report, expires after 5 minutes (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webreports/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webreports/{key}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webreports/{key}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webreports/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webreports/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webreports/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webreports/{key}

Parameters

Name In Type Required Description
key path string true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "created": "2019-08-24T14:15:22Z",
  "key": "string",
  "status": "string",
  "size": 0,
  "token": "string",
  "tokenExpires": "2019-08-24T14:15:22Z",
  "name": "string"
}

Responses

Status Meaning Description Schema
default Default default response ReportCacheEntry

Delete a report (Deprecated: 2019-05-21)

# You can also use wget
curl -X DELETE \
/opi/rest/webreports/{key} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webreports/{key}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webreports/{key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/webreports/{key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/webreports/{key}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/webreports/{key}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /webreports/{key}

Parameters

Name In Type Required Description
key path string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Download a report (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webreports/{key}/download?token=string \
  -H 'Accept: */*'

var headers = {
  'Accept':'*/*'

};

$.ajax({
  url: '/opi/rest/webreports/{key}/download',
  method: 'get',
  data: '?token=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'*/*'

};

fetch('/opi/rest/webreports/{key}/download?token=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webreports/{key}/download", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/opi/rest/webreports/{key}/download', params={
  'token': 'string'
}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/opi/rest/webreports/{key}/download',
  params: {
  'token' => 'string'
}, headers: headers

p JSON.parse(result)

GET /webreports/{key}/download

Parameters

Name In Type Required Description
key path string true none
token query string true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get a list of report cache entries (Deprecated: 2019-05-21)

# You can also use wget
curl -X GET \
/opi/rest/webreports \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webreports',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webreports',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/webreports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/webreports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/webreports',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /webreports

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "created": "2019-08-24T14:15:22Z",
    "key": "string",
    "status": "string",
    "size": 0,
    "token": "string",
    "tokenExpires": "2019-08-24T14:15:22Z",
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [ReportCacheEntry] false none none
» created string(date-time) false read-only The timestamp when the entry was created.
» key string false read-only none
» status string false read-only none
» size integer(int64) false read-only none
» token string false read-only none
» tokenExpires string(date-time) false read-only none
» name string false read-only The name of the entry.

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Generate a report (Deprecated: 2019-05-21)

# You can also use wget
curl -X POST \
/opi/rest/webreports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webreports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "targets": [
    0
  ],
  "product": "Normal",
  "appsecScaleSchedules": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webreports',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/webreports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/webreports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/webreports',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /webreports

Body parameter

{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "targets": [
    0
  ],
  "product": "Normal",
  "appsecScaleSchedules": [
    0
  ]
}

Parameters

Name In Type Required Description
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body WebReport true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count (Deprecated: 2019-05-21)

# You can also use wget
curl -X HEAD \
/opi/rest/webreports \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/webreports',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/webreports',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/webreports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/webreports', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/webreports',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /webreports

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Workflows

Get a workflow

# You can also use wget
curl -X GET \
/opi/rest/workflows/{workflowId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/workflows/{workflowId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/workflows/{workflowId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/workflows/{workflowId}',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /workflows/{workflowId}

Parameters

Name In Type Required Description
workflowId path integer(int32) true none
fields query string false A comma-separated string of fields to request

The above code returns response like this:

default Response

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "lastScan": "2019-08-24T14:15:22Z",
  "scheduleIds": [
    0
  ],
  "scannerId": 0,
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}

Responses

Status Meaning Description Schema
default Default default response Workflow

Delete a workflow

# You can also use wget
curl -X DELETE \
/opi/rest/workflows/{workflowId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/workflows/{workflowId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/workflows/{workflowId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/workflows/{workflowId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /workflows/{workflowId}

Parameters

Name In Type Required Description
workflowId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Partially update a workflow

# You can also use wget
curl -X PATCH \
/opi/rest/workflows/{workflowId} \
  -H 'Content-Type: application/merge-patch+json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "scannerId": 0,
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}';
const headers = {
  'Content-Type':'application/merge-patch+json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/merge-patch+json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/opi/rest/workflows/{workflowId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/merge-patch+json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/opi/rest/workflows/{workflowId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/merge-patch+json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/opi/rest/workflows/{workflowId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PATCH /workflows/{workflowId}

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "scannerId": 0,
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}

Parameters

Name In Type Required Description
workflowId path integer(int32) true none
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Workflow true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

# You can also use wget
curl -X PUT \
/opi/rest/workflows/{workflowId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/workflows/{workflowId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/workflows/{workflowId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /workflows/{workflowId}/schedules/{scheduleId}

Name In Type Required Description
workflowId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/workflows/{workflowId}/schedules/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/workflows/{workflowId}/schedules/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/workflows/{workflowId}/schedules/{scheduleId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/workflows/{workflowId}/schedules/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /workflows/{workflowId}/schedules/{scheduleId}

Name In Type Required Description
workflowId path integer(int32) true none
scheduleId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X PUT \
/opi/rest/workflows/{workflowId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/tags/{tagId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/tags/{tagId}',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/workflows/{workflowId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/workflows/{workflowId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/workflows/{workflowId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /workflows/{workflowId}/tags/{tagId}

Name In Type Required Description
workflowId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

# You can also use wget
curl -X DELETE \
/opi/rest/workflows/{workflowId}/tags/{tagId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/tags/{tagId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/tags/{tagId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/opi/rest/workflows/{workflowId}/tags/{tagId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/opi/rest/workflows/{workflowId}/tags/{tagId}', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/opi/rest/workflows/{workflowId}/tags/{tagId}',
  params: {
  }, headers: headers

p JSON.parse(result)

DELETE /workflows/{workflowId}/tags/{tagId}

Name In Type Required Description
workflowId path integer(int32) true none
tagId path integer(int32) true none

The above code returns response like this:

Status Meaning Description Schema
default Default default response None

Get a list of workflows

# You can also use wget
curl -X GET \
/opi/rest/workflows \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/opi/rest/workflows", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/opi/rest/workflows', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/opi/rest/workflows',
  params: {
  }, headers: headers

p JSON.parse(result)

GET /workflows

Parameters

Name In Type Required Description
limit query integer(int32) false Maximum number of entries to return
offset query integer(int32) false Zero-based offset from first entry in list
sort query string false Comma-separated list of fields to sort on, ascending by default, dash prefix inverts order
fields query string false A comma-separated string of fields to request
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

The above code returns response like this:

default Response

[
  {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "enabled": true,
    "nextOccurrence": "2019-08-24T14:15:22Z",
    "lastScan": "2019-08-24T14:15:22Z",
    "scheduleIds": [
      0
    ],
    "scannerId": 0,
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "configurations": [
      {
        "id": 0,
        "type": "SCAN_CONFIGURATION"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
default Default default response Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
anonymous [Workflow] false none none
» id integer(int32) false read-only The ID of the entry.
» customerId integer(int32) false none The ID of the customer owning the entry.
» created string(date-time) false read-only The timestamp when the entry was created.
» updated string(date-time) false read-only The timestamp when the entry was updated.
» createdBy string false read-only The name of the user who created the entry.
» updatedBy string false read-only The name of the user who updated the entry.
» createdById integer(int32) false read-only The ID of the user who created the entry.
» updatedById integer(int32) false read-only The ID of the user who updated the entry.
» name string true none The name of the entry.
» enabled boolean false none Determines if the entry is enabled or not.
» nextOccurrence string(date-time) false read-only The scan next occurrence date
» lastScan string(date-time) false read-only Last time a scan was performed using this workflow
» scheduleIds [integer] false read-only The schedule ids associated with this workflow
» scannerId integer(int32) false none The scanner id
» tags [Tag] false read-only The tags
»» id integer(int32) false read-only The ID of the entry.
»» customerId integer(int32) false none The ID of the customer owning the entry.
»» created string(date-time) false read-only The timestamp when the entry was created.
»» updated string(date-time) false read-only The timestamp when the entry was updated.
»» createdBy string false read-only The name of the user who created the entry.
»» updatedBy string false read-only The name of the user who updated the entry.
»» createdById integer(int32) false read-only The ID of the user who created the entry.
»» updatedById integer(int32) false read-only The ID of the user who updated the entry.
»» key string true none none
»» value string false none none
»» inherited boolean false read-only none
»» count integer(int32) false read-only The total number of entries associated with this entry and its child entries.
» configurations [Workflow.Configuration] true none The workflow configurations
»» id integer(int32) true none The ID of the entry.
»» type string true none none

Enumerated Values

Property Value
type SCAN_CONFIGURATION
type SCHEDULED_REPORT

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Create a workflow

# You can also use wget
curl -X POST \
/opi/rest/workflows \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "scannerId": 0,
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/workflows", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/workflows', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/workflows',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /workflows

Body parameter

{
  "customerId": 0,
  "name": "string",
  "enabled": true,
  "scannerId": 0,
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}

Parameters

Name In Type Required Description
fields query string false A comma-separated string of fields to request
return-result query boolean false "true" to return the object(s) created/modified in e.g. a POST or PATCH
body body Workflow true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Get header with count

# You can also use wget
curl -X HEAD \
/opi/rest/workflows \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows',
  method: 'head',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows',
{
  method: 'HEAD',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("HEAD", "/opi/rest/workflows", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.head('/opi/rest/workflows', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.head '/opi/rest/workflows',
  params: {
  }, headers: headers

p JSON.parse(result)

HEAD /workflows

Parameters

Name In Type Required Description
filter query string false JSON array with filters; [{"field":"<name>","value":"<string/number/boolean>","comparison":"<eq/ne/gt/lt/any/all/none/today/null>"}]

Responses

Status Meaning Description Schema
default Default default response None

Response Headers

Status Header Type Format Description
default Count integer The number of total entries, without limit and offset

Modify linked set of tags

# You can also use wget
curl -X PUT \
/opi/rest/workflows/{workflowId}/tags \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/tags',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/tags',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/opi/rest/workflows/{workflowId}/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/opi/rest/workflows/{workflowId}/tags', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/opi/rest/workflows/{workflowId}/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

PUT /workflows/{workflowId}/tags

Body parameter

[]

Parameters

Name In Type Required Description
workflowId path integer(int32) true none
body body array true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Start scans based on this workflow

# You can also use wget
curl -X POST \
/opi/rest/workflows/{workflowId}/scan \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/opi/rest/workflows/{workflowId}/scan',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('/opi/rest/workflows/{workflowId}/scan',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/opi/rest/workflows/{workflowId}/scan", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/opi/rest/workflows/{workflowId}/scan', params={

}, headers = headers)

print r.json()

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/opi/rest/workflows/{workflowId}/scan',
  params: {
  }, headers: headers

p JSON.parse(result)

POST /workflows/{workflowId}/scan

Parameters

Name In Type Required Description
workflowId path integer(int32) true none

The above code returns response like this:

Responses

Status Meaning Description Schema
default Default default response None

Response Schema

Schemas

Account

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "type": "SMB",
  "name": "string",
  "url": "string",
  "role": "string",
  "integrationId": 0,
  "credentials": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "accountId": 0,
      "classId": 0,
      "className": "string",
      "value": "string",
      "tags": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "key": "string",
          "value": "string",
          "inherited": true,
          "count": 0
        }
      ]
    }
  ],
  "assetIdentifierIds": [
    0
  ],
  "scanConfigurationIds": [
    0
  ],
  "scanPolicyIds": [
    0
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
type string true none none
name string true none The name of the entry.
url string false none none
role string false none none
integrationId integer(int32) false none none
credentials [Credential] false none none
assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
scanConfigurationIds [integer] false none none
scanPolicyIds [integer] false none none
tags [Tag] false read-only [The tags]

Enumerated Values

Property Value
type SMB
type SSH
type BASIC
type WEB
type AWS
type AZURE
type VSPHERE
type GCP
type DOCKER

Credential

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "accountId": 0,
  "classId": 0,
  "className": "string",
  "value": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
accountId integer(int32) true none none
classId integer(int32) true none none
className string false none none
value string true none none
tags [Tag] false read-only [The tags]

Tag

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "key": "string",
  "value": "string",
  "inherited": true,
  "count": 0
}

The tags

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
key string true none none
value string false none none
inherited boolean false read-only none
count integer(int32) false read-only The total number of entries associated with this entry and its child entries.

AgentInstallerCreationRequest

{
  "platform": "string",
  "arch": "string",
  "pkg": "string",
  "customAttributes": "string",
  "expires": "string",
  "allowedUses": 0
}

Properties

Name Type Required Restrictions Description
platform string true none none
arch string true none none
pkg string true none none
customAttributes string false none none
expires string false none none
allowedUses integer(int64) false none none

AnalyticsSummary

{
  "label": "string",
  "value": 0,
  "values": [
    {
      "label": "string",
      "value": 0,
      "values": []
    }
  ]
}

Properties

Name Type Required Restrictions Description
label string false read-only none
value integer(int64) false read-only none
values [AnalyticsSummary] false read-only none

AnalyticsTrendSummary

{
  "label": "string",
  "values": [
    {
      "label": "string",
      "value": 0,
      "values": [
        {}
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
label string false read-only none
values [AnalyticsSummary] false read-only none

AnalyticsComplianceFinding

{
  "uuid": "string",
  "assetUuid": "string",
  "age": 0,
  "remediation": 0,
  "name": "string",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "policyUuid": "string",
  "policyName": "string",
  "compliant": "COMPLIANT",
  "humanCheck": true,
  "exception": "2019-08-24T14:15:22Z",
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "tags": [
    {
      "id": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
assetUuid string false read-only none
age integer(int64) false read-only none
remediation integer(int64) false read-only none
name string false read-only The name of the entry.
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
policyUuid string false read-only none
policyName string false read-only none
compliant string false read-only none
humanCheck boolean false read-only none
exception string(date-time) false read-only none
exceptionUntil string(date-time) false read-only none
tags [AnalyticsTag] false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

AnalyticsTag

{
  "id": 0,
  "key": "string",
  "value": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
key string false read-only none
value string false read-only none

AnalyticsCompliancePolicy

{
  "uuid": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
name string false read-only The name of the entry.

AnalyticsAppStak

{
  "uuid": "string",
  "name": "string",
  "category": "string",
  "businessCriticality": "string",
  "lastScan": "2019-08-24T14:15:22Z",
  "grade": "string",
  "age": 0,
  "remediation": 0,
  "appStakId": 0,
  "assets": 0,
  "findings": 0,
  "hasExploits": true,
  "compliant": "COMPLIANT",
  "solutionProducts": [
    "string"
  ],
  "tags": [
    {
      "id": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
name string false read-only The name of the entry.
category string false read-only none
businessCriticality string false read-only none
lastScan string(date-time) false read-only none
grade string false read-only none
age integer(int64) false read-only none
remediation integer(int64) false read-only none
appStakId integer(int64) false read-only none
assets integer(int64) false read-only none
findings integer(int64) false read-only none
hasExploits boolean false read-only none
compliant string false read-only none
solutionProducts [string] false read-only none
tags [AnalyticsTag] false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

AnalyticsAssetGroup

{
  "uuid": "string",
  "parentUuid": "string",
  "name": "string",
  "grade": "string",
  "sourceSystemId": 0,
  "sourceSystemName": "string",
  "appstaks": 0,
  "assets": 0,
  "findings": 0,
  "appStakUuids": [
    "string"
  ],
  "tags": [
    {
      "id": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
parentUuid string false read-only none
name string false read-only The name of the entry.
grade string false read-only none
sourceSystemId integer(int64) false read-only none
sourceSystemName string false read-only none
appstaks integer(int64) false read-only none
assets integer(int64) false read-only none
findings integer(int64) false read-only none
appStakUuids [string] false read-only none
tags [AnalyticsTag] false read-only none

AnalyticsAsset

{
  "uuid": "string",
  "name": "string",
  "businessCriticality": "string",
  "exposed": true,
  "hasExploits": true,
  "assetGroupUuid": "string",
  "grade": "string",
  "platform": "string",
  "age": 0,
  "remediation": 0,
  "lastScan": "2019-08-24T14:15:22Z",
  "appStaks": "string",
  "provider": "string",
  "findings": 0,
  "sourceSystemId": 0,
  "sourceSystemName": "string",
  "compliant": "COMPLIANT",
  "ips": [
    "string"
  ],
  "hostnames": [
    "string"
  ],
  "sources": [
    "string"
  ],
  "categories": [
    "string"
  ],
  "appStakUuids": [
    "string"
  ],
  "solutionProducts": [
    "string"
  ],
  "tags": [
    {
      "id": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
name string false read-only The name of the entry.
businessCriticality string false read-only none
exposed boolean false read-only none
hasExploits boolean false read-only none
assetGroupUuid string false read-only none
grade string false read-only none
platform string false read-only none
age integer(int64) false read-only none
remediation integer(int64) false read-only none
lastScan string(date-time) false read-only none
appStaks string false read-only none
provider string false read-only none
findings integer(int64) false read-only none
sourceSystemId integer(int64) false read-only none
sourceSystemName string false read-only none
compliant string false read-only none
ips [string] false read-only none
hostnames [string] false read-only none
sources [string] false read-only none
categories [string] false read-only none
appStakUuids [string] false read-only none
solutionProducts [string] false read-only none
tags [AnalyticsTag] false read-only none

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

AnalyticsCategory

{
  "name": "string",
  "grade": "string",
  "appStaks": 0,
  "assets": 0,
  "findings": 0
}

Properties

Name Type Required Restrictions Description
name string false read-only The name of the entry.
grade string false read-only none
appStaks integer(int64) false read-only none
assets integer(int64) false read-only none
findings integer(int64) false read-only none

AnalyticsFinding

{
  "uuid": "string",
  "likelihood": 0,
  "exploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "exploitProbabilityUpdateDate": "2019-08-24T14:15:22Z",
  "farsightLastSeen": "2019-08-24T14:15:22Z",
  "cvssV2": 0,
  "cvssV2Severity": "string",
  "cvssV3": 0,
  "cvssV3Severity": "string",
  "assetUuid": "string",
  "grade": "string",
  "gradeScore": 0,
  "age": 0,
  "remediation": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "lastScan": "2019-08-24T14:15:22Z",
  "port": 0,
  "protocol": "string",
  "name": "string",
  "solutionProduct": "string",
  "cve": "string",
  "cwe": "string",
  "status": "string",
  "sans25": 0,
  "hasExploits": true,
  "checkId": 0,
  "sourceSystemId": 0,
  "sourceSystemName": "string",
  "wasc": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ],
  "capec": [
    0
  ],
  "tags": [
    {
      "id": 0,
      "key": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
uuid string false read-only The UUID of the entry.
likelihood number(float) false read-only none
exploitProbability number(float) false read-only none
exploitProbabilityDelta number(float) false read-only none
exploitProbabilityUpdateDate string(date-time) false read-only none
farsightLastSeen string(date-time) false read-only none
cvssV2 number(float) false read-only none
cvssV2Severity string false read-only none
cvssV3 number(float) false read-only none
cvssV3Severity string false read-only none
assetUuid string false read-only none
grade string false read-only none
gradeScore integer(int64) false read-only none
age integer(int64) false read-only none
remediation integer(int64) false read-only none
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
lastScan string(date-time) false read-only none
port integer(int64) false read-only none
protocol string false read-only none
name string false read-only The name of the entry.
solutionProduct string false read-only none
cve string false read-only none
cwe string false read-only CWE classification of the entry.
status string false read-only none
sans25 integer(int64) false read-only SANS 25 classification of the entry.
hasExploits boolean false read-only none
checkId integer(int64) false read-only none
sourceSystemId integer(int64) false read-only none
sourceSystemName string false read-only none
wasc [integer] false read-only none
owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
owasp2021 [integer] false read-only none
capec [integer] false read-only CAPEC classification of the entry.
tags [AnalyticsTag] false read-only none

AppStakCategory

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.

AppStak

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "appStakCategoryId": 0,
  "appStakCategoryName": "string",
  "businessCriticality": "LOW",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
appStakCategoryId integer(int32) false none none
appStakCategoryName string false none none
businessCriticality string false none none
tags [Tag] false read-only [The tags]

Enumerated Values

Property Value
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL

AppStakRule

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "assetUuids": [
    "string"
  ],
  "appStakId": 0,
  "ruleType": "ASSETS",
  "filters": "string",
  "dbValues": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
assetUuids [string] false none none
appStakId integer(int32) true none none
ruleType string true none none
filters string false none none
dbValues string false none none

Enumerated Values

Property Value
ruleType ASSETS
ruleType ASSETGROUPS

Appliance

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "primary": true,
  "virtual": true,
  "revoked": "2019-08-24T14:15:22Z",
  "mac": "string",
  "updatedOnline": "2019-08-24T14:15:22Z",
  "updatedOffline": "2019-08-24T14:15:22Z",
  "versions": {
    "xmlapi": "string",
    "ui": "string",
    "scanner": "string",
    "rules": "string"
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
customerName string false read-only none
primary boolean false read-only none
virtual boolean false read-only none
revoked string(date-time) false read-only none
mac string false read-only none
updatedOnline string(date-time) false read-only none
updatedOffline string(date-time) false read-only none
versions Appliance.ApplianceVersion false none none

Appliance.ApplianceVersion

{
  "xmlapi": "string",
  "ui": "string",
  "scanner": "string",
  "rules": "string"
}

Properties

Name Type Required Restrictions Description
xmlapi string false none none
ui string false none none
scanner string false none none
rules string false none none

Activity

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "assetGroupId": 0,
  "activityType": "PENTEST_COMPLETED",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
assetGroupId integer(int32) false read-only The id of the AssetGroup this activity is related to
activityType string true none The type of this activity
description string false none Description of the entry.

Enumerated Values

Property Value
activityType PENTEST_COMPLETED
activityType ONBOARDING_COMPLETED
activityType FALSE_POSITIVE_DISCARDED
activityType NEW_VULNERABILITY_CHECK
activityType EXECUTIVE_SUMMARY_UPDATED
activityType VERIFICATION_REQUEST_COMPLETED

AssetGroup

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "summary": "string",
  "summaryPublishedAt": "2019-08-24T14:15:22Z",
  "path": [
    0
  ],
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "managed": true,
  "commentPendingSince": "2019-08-24T14:15:22Z",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
parentId integer(int32) false none The ID of the parent entry.
assetIds [integer] false read-only The component assets
assetGroupIds [integer] false read-only The children asset groups
summary string false read-only The content of the executive summary
summaryPublishedAt string(date-time) false read-only When the executive summary was published
path [integer] false read-only The path of the asset group tree
activeSubscriptionTypes [string] false read-only The assetgroup's active subscription types
managed boolean false read-only Managed internally by (e.g SWAT_API or GhostLab)
commentPendingSince string(date-time) false read-only The date since comment is pending
tags [Tag] false read-only The tags

Comment

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "parentId": 0,
  "comment": "string",
  "entityType": "FINDING",
  "entityId": 0,
  "supportStatus": "NOT_APPLICABLE",
  "authorIsStaff": true,
  "deleted": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
parentId integer(int32) false none The ID of the parent entry.
comment string false none The content of the comment
entityType string false none The type of object this comment is made for
entityId integer(int32) false none The ID of the object this comment is made for
supportStatus string false none Current support status of the comment
authorIsStaff boolean false read-only Whether the comment is from Outpost24 or the customer
deleted string(date-time) false none When the comment was deleted

Enumerated Values

Property Value
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
supportStatus NOT_APPLICABLE
supportStatus WAITING
supportStatus DONE
supportStatus INTERNAL

Subscription

{
  "uuid": "string",
  "type": "DAST",
  "associations": {
    "assetGroups": [
      "string"
    ]
  },
  "durationInDays": 0,
  "activeUntil": "2019-08-24T14:15:22Z",
  "activatedAt": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string",
  "template": {
    "uuid": "string",
    "variables": "string",
    "template": "string",
    "name": "string"
  },
  "customer": {
    "uuid": "string"
  },
  "limits": {
    "netsecAssets": 0,
    "netsecScans": 0,
    "netsecInternalAssets": 0,
    "netsecInternalScans": 0,
    "netsecApplianceAssets": 0,
    "netsecApplianceScans": 0,
    "netsecApplianceExternalAssets": 0,
    "netsecApplianceExternalScans": 0,
    "complianceAssets": 0,
    "complianceScans": 0,
    "complianceInternalAssets": 0,
    "complianceInternalScans": 0,
    "complianceApplianceAssets": 0,
    "complianceApplianceScans": 0,
    "complianceApplianceExternalAssets": 0,
    "complianceApplianceExternalScans": 0,
    "pciAssets": 0,
    "pciScans": 0,
    "scaleAssets": 0,
    "scaleScans": 0,
    "scaleInternalAssets": 0,
    "scaleApplianceAssets": 0,
    "scaleApplianceScans": 0,
    "scaleApplianceExternalScans": 0,
    "scaleApplianceExternalAssets": 0,
    "cloudsecAssets": 0,
    "cloudsecScans": 0,
    "networkDiscoveryScans": 0,
    "networkDiscoveryApplianceScans": 0,
    "cloudDiscoveryScans": 0,
    "cloudDiscoveryApplianceScans": 0,
    "networkAssets": 0,
    "networkScans": 0,
    "networkApplianceAssets": 0,
    "networkApplianceScans": 0,
    "dockerImageDiscoveryScans": 0,
    "dockerImageAssets": 0,
    "dockerImageScans": 0,
    "dockerImageDiscoveryApplianceScans": 0,
    "dockerImageApplianceAssets": 0,
    "dockerImageApplianceScans": 0,
    "outscanNXAssets": 0,
    "outscanNXApplianceAssets": 0
  },
  "isActive": true
}

Properties

Name Type Required Restrictions Description
uuid string false none The UUID of the entry.
type string false none none
associations Subscription.Associations false none none
durationInDays integer(int32) false none none
activeUntil string(date-time) false none none
activatedAt string(date-time) false none none
created string(date-time) false none The timestamp when the entry was created.
createdBy string false none The name of the user who created the entry.
updated string(date-time) false none The timestamp when the entry was updated.
updatedBy string false none The name of the user who updated the entry.
template Subscription.Template false none none
customer Subscription.Customer false none none
limits Subscription.Limits false none none
isActive boolean false none none

Enumerated Values

Property Value
type DAST
type SCALE
type SCOUT
type SNAPSHOT
type ASSURE
type DAST_EXPERT
type VERIFY
type SWAT
type CLOUDSEC
type NETSEC
type CONSUMPTION

Subscription.Associations

{
  "assetGroups": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
assetGroups [string] false none none

Subscription.Customer

{
  "uuid": "string"
}

Properties

Name Type Required Restrictions Description
uuid string true none The UUID of the entry.

Subscription.Limits

{
  "netsecAssets": 0,
  "netsecScans": 0,
  "netsecInternalAssets": 0,
  "netsecInternalScans": 0,
  "netsecApplianceAssets": 0,
  "netsecApplianceScans": 0,
  "netsecApplianceExternalAssets": 0,
  "netsecApplianceExternalScans": 0,
  "complianceAssets": 0,
  "complianceScans": 0,
  "complianceInternalAssets": 0,
  "complianceInternalScans": 0,
  "complianceApplianceAssets": 0,
  "complianceApplianceScans": 0,
  "complianceApplianceExternalAssets": 0,
  "complianceApplianceExternalScans": 0,
  "pciAssets": 0,
  "pciScans": 0,
  "scaleAssets": 0,
  "scaleScans": 0,
  "scaleInternalAssets": 0,
  "scaleApplianceAssets": 0,
  "scaleApplianceScans": 0,
  "scaleApplianceExternalScans": 0,
  "scaleApplianceExternalAssets": 0,
  "cloudsecAssets": 0,
  "cloudsecScans": 0,
  "networkDiscoveryScans": 0,
  "networkDiscoveryApplianceScans": 0,
  "cloudDiscoveryScans": 0,
  "cloudDiscoveryApplianceScans": 0,
  "networkAssets": 0,
  "networkScans": 0,
  "networkApplianceAssets": 0,
  "networkApplianceScans": 0,
  "dockerImageDiscoveryScans": 0,
  "dockerImageAssets": 0,
  "dockerImageScans": 0,
  "dockerImageDiscoveryApplianceScans": 0,
  "dockerImageApplianceAssets": 0,
  "dockerImageApplianceScans": 0,
  "outscanNXAssets": 0,
  "outscanNXApplianceAssets": 0
}

Properties

Name Type Required Restrictions Description
netsecAssets integer(int32) false none The netsec assets
netsecScans integer(int32) false none The netsec scans
netsecInternalAssets integer(int32) false none The netsec internal assets
netsecInternalScans integer(int32) false none The netsec internal scans
netsecApplianceAssets integer(int32) false none The netsec appliance assets
netsecApplianceScans integer(int32) false none The netsec appliance scans
netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
complianceAssets integer(int32) false none The compliance assets
complianceScans integer(int32) false none The compliance scans
complianceInternalAssets integer(int32) false none The compliance internal assets
complianceInternalScans integer(int32) false none The compliance internal scans
complianceApplianceAssets integer(int32) false none The compliance appliance assets
complianceApplianceScans integer(int32) false none The compliance appliance scans
complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
pciAssets integer(int32) false none The pci assets
pciScans integer(int32) false none The pci scans
scaleAssets integer(int32) false none The scale assets
scaleScans integer(int32) false none The scale scans
scaleInternalAssets integer(int32) false none The scale internal assets
scaleApplianceAssets integer(int32) false none The scale appliance assets
scaleApplianceScans integer(int32) false none The scale appliance scans
scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
cloudsecAssets integer(int32) false none The cloudsec assets
cloudsecScans integer(int32) false none The cloudsec scans
networkDiscoveryScans integer(int32) false none The network discovery scans
networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
cloudDiscoveryScans integer(int32) false none The cloud discovery scans
cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
networkAssets integer(int32) false none The network assets
networkScans integer(int32) false none The network scans
networkApplianceAssets integer(int32) false none The network appliance assets
networkApplianceScans integer(int32) false none The network appliance scans
dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
dockerImageAssets integer(int32) false none The docker image assets
dockerImageScans integer(int32) false none The docker image scans
dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
dockerImageApplianceScans integer(int32) false none The docker image appliance scans
outscanNXAssets integer(int32) false none The outscan NX assets
outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets

Subscription.Template

{
  "uuid": "string",
  "variables": "string",
  "template": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
uuid string true none The UUID of the entry.
variables string false none none
template string false none none
name string false none The name of the entry.

AgentMatch

{
  "data": {
    "type": "IP",
    "identifier": "string",
    "from": {
      "type": "IP",
      "identifier": "string",
      "relation": "string"
    }
  },
  "type": "string"
}

Properties

Name Type Required Restrictions Description
data IdentifierData false none none
type string false none none

AssetIdentifier

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "presentableName": "string",
  "type": "IP",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "scannerId": 0,
  "scannerName": "string",
  "ownership": 0,
  "customOwnership": 100,
  "firstScanId": 0,
  "lastScanId": 0,
  "source": [
    "SCOUT"
  ],
  "links": [
    0
  ],
  "assetIds": [
    0
  ],
  "assetNames": [
    "string"
  ],
  "accountIds": [
    0
  ],
  "os": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "properties": {
    "type": "IP"
  }
}

The asset links

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
presentableName string false none none
type string true none none
firstSeen string(date-time) false none Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false none Timestamp when the entry was seen last time.
scannerId integer(int32) false none none
scannerName string false read-only none
ownership integer(int32) false read-only none
customOwnership integer(int32) false none none
firstScanId integer(int32) false read-only none
lastScanId integer(int32) false read-only none
source [string] true none none
links [integer] false read-only none
assetIds [integer] false read-only none
assetNames [string] false read-only none
accountIds [integer] false none none
os string false none none
tags [Tag] false read-only [The tags]
properties BaseProperties false none The asset base properties

Enumerated Values

Property Value
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

AssetIdentifier.AgentProperties

{
  "type": "IP",
  "uuid": "string",
  "version": "string",
  "lastSynchronized": "2019-08-24T14:15:22Z",
  "customAttributes": {
    "property1": "string",
    "property2": "string"
  },
  "retired": "2019-08-24T14:15:22Z",
  "matches": [
    {
      "data": {
        "type": "IP",
        "identifier": "string",
        "from": {
          "type": "IP",
          "identifier": "string",
          "relation": "string"
        }
      },
      "type": "string"
    }
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseProperties false none The asset base properties

and

Name Type Required Restrictions Description
anonymous object false none none
» uuid string false none none
» version string false none none
» lastSynchronized string(date-time) false none none
» customAttributes object false none none
»» additionalProperties string false none none
» retired string(date-time) false none none
» matches [AgentMatch] false none none

AssetIdentifier.DockerImageProperties

{
  "type": "IP",
  "tag": "string",
  "size": 0,
  "architecture": "string"
}

The docker image properties

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseProperties false none The asset base properties

and

Name Type Required Restrictions Description
anonymous object false none none
» tag string false none none
» size integer(int64) false none none
» architecture string false none none

BaseProperties

{
  "type": "IP"
}

The asset base properties

Properties

Name Type Required Restrictions Description
type string true none none

Enumerated Values

Property Value
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

From

{
  "type": "IP",
  "identifier": "string",
  "relation": "string"
}

Properties

Name Type Required Restrictions Description
type string false none none
identifier string false none none
relation string false none none

Enumerated Values

Property Value
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

IdentifierData

{
  "type": "IP",
  "identifier": "string",
  "from": {
    "type": "IP",
    "identifier": "string",
    "relation": "string"
  }
}

Properties

Name Type Required Restrictions Description
type string false none none
identifier string false none none
from From false none none

Enumerated Values

Property Value
type IP
type HOSTNAME
type AWS_ACCOUNT_ID
type AWS_INSTANCE_ID
type AWS_REGION
type MAC
type NETBIOS
type GCP_PROJECT_ID
type MAZ_TENANT_ID
type MAZ_SUBSCRIPTION
type MAZ_RESOURCE_GROUP
type MAZ_RESOURCE
type DOCKER_REGISTRY
type DOCKER_IMAGE
type SEED_PATH
type AGENT
type SERIAL_MACHINE_ID
type SERIAL_PRODUCT_ID
type SERIAL_DISK_ID

{
  "id": 0,
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "type": "RESOLVES_TO"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
assetIdentifierId integer(int32) true none The ID of the asset identifier associated with this entry
firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
lastSeen string(date-time) true none Timestamp when the entry was seen last time.
type string true none none

Enumerated Values

Property Value
type RESOLVES_TO
type LOADS_SCRIPTS_FROM
type REFERS_IN_TLS_TO
type DNS_CNAME
type DNS_DNAME
type DNS_MX
type DNS_NS
type DNS_PTR
type DNS_SRV
type DNS_A
type DNS_AAAA
type DNS_URI
type CONTAINS
type HTML_LINKS_TO
type ARP

Asset

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "assetIdentifierIds": [
    0
  ],
  "assetIdentifierTypes": [
    "IP"
  ],
  "dockerImageOs": "string",
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "uuid": "string",
  "firstScanId": 0,
  "lastScanId": 0,
  "compliant": "COMPLIANT",
  "cvssV2EnvironmentalVector": "string",
  "cvssV3EnvironmentalVector": "string",
  "dockerImageProperties": {
    "type": "IP"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "assetIdentifiers": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "name": "string",
      "presentableName": "string",
      "type": "IP",
      "firstSeen": "2019-08-24T14:15:22Z",
      "lastSeen": "2019-08-24T14:15:22Z",
      "scannerId": 0,
      "scannerName": "string",
      "ownership": 0,
      "customOwnership": 100,
      "firstScanId": 0,
      "lastScanId": 0,
      "source": [
        "SCOUT"
      ],
      "links": [
        0
      ],
      "assetIds": [
        0
      ],
      "assetNames": [
        "string"
      ],
      "accountIds": [
        0
      ],
      "os": "string",
      "tags": [
        {
          "id": 0,
          "customerId": 0,
          "created": "2019-08-24T14:15:22Z",
          "updated": "2019-08-24T14:15:22Z",
          "createdBy": "string",
          "updatedBy": "string",
          "createdById": 0,
          "updatedById": 0,
          "key": "string",
          "value": "string",
          "inherited": true,
          "count": 0
        }
      ],
      "properties": {
        "type": "IP"
      }
    }
  ],
  "assetGroups": [
    {
      "id": 0,
      "name": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
source [string] true none The asset sources
assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
assetIdentifierTypes [string] false read-only The asset identifier types (deprecated)
dockerImageOs string false read-only The docker image operating system name
activeSubscriptionTypes [string] false read-only The asset's active subscription types
uuid string false read-only The UUID of the entry.
firstScanId integer(int32) false read-only The id of the first scan performed on the asset
lastScanId integer(int32) false read-only The id of last scan performed on the asset
compliant string false read-only The asset compliance status
cvssV2EnvironmentalVector string false none The CVSS V2 environmental vector
cvssV3EnvironmentalVector string false none The CVSS V3 environmental vector
dockerImageProperties BaseProperties false none The asset base properties
tags [Tag] false read-only The tags
assetIdentifiers [AssetIdentifier] false none The asset links
assetGroups [Asset.AssetGroup] false read-only Information of all asset groups the asset is linked to

Enumerated Values

Property Value
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Asset.AssetGroup

{
  "id": 0,
  "name": "string"
}

Information of all asset groups the asset is linked to

Properties

Name Type Required Restrictions Description
id integer(int32) false none The ID of the entry.
name string false none The name of the entry.

{
  "id": 0,
  "assetId": 0,
  "assetIdentifierId": 0,
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
assetId integer(int32) false none none
assetIdentifierId integer(int32) true none The ID of the asset identifier associated with this entry
firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
lastSeen string(date-time) true none Timestamp when the entry was seen last time.

Audit

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "objectName": "string",
  "objectId": 0,
  "action": "string",
  "updatedFields": {
    "property1": "string",
    "property2": "string"
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
objectName string false read-only none
objectId integer(int32) false read-only none
action string false read-only none
updatedFields object false read-only none
» additionalProperties string false read-only none

CertificateCreationRequest

{
  "certificateSigningRequest": "string",
  "scannerId": 0,
  "key": "string",
  "service": "OUTPOST24_GLOBAL"
}

Properties

Name Type Required Restrictions Description
certificateSigningRequest string false none none
scannerId integer(int64) false none none
key string false none none
service string false none none

Enumerated Values

Property Value
service OUTPOST24_GLOBAL
service OUTSCAN
service OPERATOR
service OUTSCAN_FRONTEND
service OUTSCAN_ADMIN
service OUTSCAN_BACKEND
service OUTSCAN_ATTACKER
service OUTSCAN_REMOTE_SUPPORT
service HIAB_SCHEDULER
service HIAB_SCANNER
service REPORT_SERVICE
service EVENT_SERVICE
service MESOTHELAE_JOBS
service MESOTHELAE_TASKS
service LIBELLUM
service TEDDY_SALAD
service AGENT
service MESOS_AGENT
service SWAT_API
service SWAT_WORKER
service SUPPORT

Check

{
  "id": 0,
  "cve": "string",
  "name": "string",
  "nvdCvssV2Score": 0,
  "nvdCvssV3Score": 0,
  "nvdCvssV2Vector": "string",
  "cvssV3Severity": "RECOMMENDATION",
  "hasExploits": true,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "description": "string",
  "cyrating": 0,
  "previousCyrating": 0,
  "cyratingDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "exploitProbability": 0,
  "previousExploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "softwareComponent": "string",
  "owasp2017": [
    0
  ],
  "solutionType": "NOT_CLASSIFIED",
  "solution": "string",
  "solutionProduct": "string",
  "solutionTitle": "string",
  "solutionUuid": "string",
  "bugTraq": [
    0
  ],
  "nvdCvssV3Vector": "string",
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
cve string false read-only The check CVE
name string false read-only The name of the entry.
nvdCvssV2Score number(double) false read-only The CVSS V2 score
nvdCvssV3Score number(double) false read-only The CVSS V3 score
nvdCvssV2Vector string false read-only The CVSS V2 vector
cvssV3Severity string false read-only The CVSS V3 Severity
hasExploits boolean false read-only Set to true when exploits are available
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
description string false read-only Description of the entry.
cyrating number(double) false read-only none
previousCyrating number(double) false read-only none
cyratingDelta number(double) false read-only none
cyratingUpdated string(date-time) false read-only none
cyratingLastSeen string(date-time) false read-only none
exploitProbability number(double) false read-only The exploit probability
previousExploitProbability number(double) false read-only The previous exploit probability
exploitProbabilityDelta number(double) false read-only The exploit probability delta
softwareComponent string false read-only The software component
owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
solutionType string false read-only The solution type
solution string false read-only The solution
solutionProduct string false read-only The solution product
solutionTitle string false read-only The solution title
solutionUuid string false read-only The solution uuid
bugTraq [integer] false read-only An array of Bugtraq reference IDs.
nvdCvssV3Vector string false read-only The CVSS V3 vector
farsight Farsight false none The farsight concists in additional information on risk such as likelihood, threat activity
classifications Classification.Classifications false none The classifications such as CAPEC, OWASP20XX

Enumerated Values

Property Value
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE

Classification.Classifications

{
  "sans25": 0,
  "capec": [
    0
  ],
  "owasp2004": [
    0
  ],
  "owasp2007": [
    0
  ],
  "owasp2010": [
    0
  ],
  "owasp2013": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ]
}

The classifications such as CAPEC, OWASP20XX

Properties

Name Type Required Restrictions Description
sans25 integer(int32) false none SANS 25 classification of the entry.
capec [integer] false none CAPEC classification of the entry.
owasp2004 [integer] false none An array of OWASP Top 10 2004 classifications of the entry.
owasp2007 [integer] false none An array of OWASP Top 10 2007 classifications of the entry.
owasp2010 [integer] false none An array of OWASP Top 10 2010 classifications of the entry.
owasp2013 [integer] false none An array of OWASP Top 10 2013 classifications of the entry.
owasp2017 [integer] false none An array of OWASP Top 10 2017 classifications of the entry.
owasp2021 [integer] false none none

Farsight

{
  "risk": {
    "score": 0,
    "delta": 0
  },
  "updated": "2019-08-24T14:15:22Z",
  "lastThreatActivity": "2019-08-24T14:15:22Z"
}

The farsight concists in additional information on risk such as likelihood, threat activity

Properties

Name Type Required Restrictions Description
risk Farsight.Risk false none none
updated string(date-time) false none The timestamp when the entry was updated.
lastThreatActivity string(date-time) false none none

Farsight.Risk

{
  "score": 0,
  "delta": 0
}

Properties

Name Type Required Restrictions Description
score number(float) false none none
delta number(float) false none none

Exploit

{
  "id": 0,
  "source": "Unknown",
  "cve": "string",
  "name": "string",
  "created": "2019-08-24T14:15:22Z",
  "pack": "string",
  "checkId": 0,
  "url": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
source string false read-only none
cve string false read-only none
name string false read-only The name of the entry.
created string(date-time) false read-only The timestamp when the entry was created.
pack string false read-only none
checkId integer(int64) false read-only none
url string false read-only none

Enumerated Values

Property Value
source Unknown
source Core Security
source Immunity
source Exploit Database
source DSquare Security
source Contagio
source Metasploit
source SAINT
source Security Focus
source Snort
source Farsight

Classification

{
  "id": 0,
  "cwe": 0,
  "name": "string",
  "sans25": 0,
  "capec": [
    0
  ],
  "owasp2004": [
    0
  ],
  "owasp2007": [
    0
  ],
  "owasp2010": [
    0
  ],
  "owasp2013": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ],
  "secureCodeWarrior": {
    "name": "string",
    "description": "string",
    "url": "string"
  },
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
cwe integer(int32) false read-only CWE classification of the entry.
name string false read-only The name of the entry.
sans25 integer(int32) false read-only SANS 25 classification of the entry.
capec [integer] false read-only CAPEC classification of the entry.
owasp2004 [integer] false read-only An array of OWASP Top 10 2004 classifications of the entry.
owasp2007 [integer] false read-only An array of OWASP Top 10 2007 classifications of the entry.
owasp2010 [integer] false read-only An array of OWASP Top 10 2010 classifications of the entry.
owasp2013 [integer] false read-only An array of OWASP Top 10 2013 classifications of the entry.
owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
owasp2021 [integer] false read-only none
secureCodeWarrior SecureCodeWarrior false none The secure code warrior information on the vulnerability description and training
classifications Classification.Classifications false none The classifications such as CAPEC, OWASP20XX

SecureCodeWarrior

{
  "name": "string",
  "description": "string",
  "url": "string"
}

The secure code warrior information on the vulnerability description and training

Properties

Name Type Required Restrictions Description
name string false none The name of the entry.
description string false none Description of the entry.
url string false none none

ComplianceFinding

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "requirementId": 0,
  "matchId": 0,
  "assetId": 0,
  "policyId": 0,
  "policyName": "string",
  "audit": "string",
  "description": "string",
  "rationale": "string",
  "scored": true,
  "nameLong": "string",
  "nameShort": "string",
  "requirement": "string",
  "solution": "string",
  "impacts": "string",
  "notes": "string",
  "references": "string",
  "controls": "string",
  "category": "INFRASTRUCTURE",
  "source": [
    "SCOUT"
  ],
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "compliant": "COMPLIANT",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "falsePositiveBy": "string",
  "exception": "2019-08-24T14:15:22Z",
  "exceptionComment": "string",
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "exceptionBy": "string",
  "humanCheck": true,
  "firstFailed": "2019-08-24T14:15:22Z",
  "lastFailed": "2019-08-24T14:15:22Z",
  "assetName": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
requirementId integer(int32) true none Id of the requirement associated with the finding
matchId integer(int32) true none Id of the matching entity
assetId integer(int32) true none Id of the associated asset
policyId integer(int32) false read-only Id of the associated policy
policyName string false read-only Name of the associated policy
audit string false read-only Audit information related to the finding
description string false read-only Description of the entry.
rationale string false read-only Rationale behind the finding
scored boolean false read-only Indicates whether the finding is scored
nameLong string false read-only Long name associated with the finding
nameShort string false read-only Short name associated with the finding
requirement string false read-only Requirement details associated with the finding
solution string false read-only Solution to address the finding
impacts string false read-only Impacts of the finding
notes string false read-only Additional notes related to the finding
references string false read-only References related to the finding
controls string false read-only Controls in place to address the finding
category string false read-only Category of compliance requirement
source [string] false read-only Array of sources related to the finding
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
firstScanId integer(int32) false read-only Id of the first scan associated with the finding
lastScanId integer(int32) false read-only Id of the last scan associated with the finding
compliant string false read-only Compliance status of the finding
falsePositive string(date-time) false read-only Instant when the finding was marked as false positive
falsePositiveComment string false read-only Comment related to marking the finding as false positive
falsePositiveBy string false read-only User who marked the finding as false positive
exception string(date-time) false read-only Instant when an exception was recorded for the finding
exceptionComment string false read-only Comment related to the exception recorded for the finding
exceptionUntil string(date-time) false read-only Instant until when the exception is valid
exceptionBy string false read-only User who recorded the exception for the finding
humanCheck boolean false read-only Indicates whether there is a human check for the finding
firstFailed string(date-time) false read-only Instant when the finding first failed
lastFailed string(date-time) false read-only Instant when the finding last failed
assetName string false read-only Name of the asset associated with the finding
tags [Tag] false read-only The tags

Enumerated Values

Property Value
category INFRASTRUCTURE
category COMPUTE
category NETWORK
category STORAGE
category DATABASE
category BIG_DATA_AND_ANALYTICS
category SECURITY_AND_IDENTITY
category MONITORING_AND_LOGGING
category NOT_DEFINED
compliant COMPLIANT
compliant NOT_COMPLIANT
compliant COMPLIANT_WITH_EXCEPTIONS

Policy

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "description": "string",
  "type": "AWS"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string false read-only The name of the entry.
description string false read-only Description of the entry.
type string false read-only none

Enumerated Values

Property Value
type AWS
type GCP
type AZURE

Requirement

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "policyId": 0,
  "audit": "string",
  "description": "string",
  "rationale": "string",
  "scored": true,
  "nameLong": "string",
  "nameShort": "string",
  "requirementId": "string",
  "solution": "string",
  "category": "INFRASTRUCTURE",
  "notes": "string",
  "references": "string",
  "controls": "string",
  "impacts": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
policyId integer(int32) false read-only none
audit string false read-only none
description string false read-only Description of the entry.
rationale string false read-only none
scored boolean false read-only none
nameLong string false read-only none
nameShort string false read-only none
requirementId string false read-only none
solution string false read-only none
category string false read-only none
notes string false read-only none
references string false read-only none
controls string false read-only none
impacts string false read-only none

Enumerated Values

Property Value
category INFRASTRUCTURE
category COMPUTE
category NETWORK
category STORAGE
category DATABASE
category BIG_DATA_AND_ANALYTICS
category SECURITY_AND_IDENTITY
category MONITORING_AND_LOGGING
category NOT_DEFINED

ComplianceFindingException

{
  "exceptionUntil": "2019-08-24T14:15:22Z",
  "exceptionComment": "string"
}

Properties

Name Type Required Restrictions Description
exceptionUntil string(date-time) true none none
exceptionComment string false none none

ComplianceFindingFalsePositive

{
  "falsePositiveComment": "string"
}

Properties

Name Type Required Restrictions Description
falsePositiveComment string true none none

ComplianceReport

{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "level": "Detailed",
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "filter": "string",
  "viewTemplateId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
format string true none none
password string false none none
zip boolean false none none
level string false none none
assetIds [integer] false none none
assetGroupIds [integer] false none none
tagIds [integer] false none none
filter string false none none
viewTemplateId integer(int32) false none none
deliveryMethod DeliveryMethod false none none

Enumerated Values

Property Value
format PDF
format EXCEL
format XML
format SWATDEMO
level Detailed
level Management
level Summary

DeliveryMethod

{
  "email": {
    "userIds": [
      0
    ],
    "recipients": {
      "addresses": [
        "string"
      ],
      "pgpKey": "string"
    }
  },
  "managedReport": {
    "name": "string",
    "tags": "string"
  }
}

Properties

Name Type Required Restrictions Description
email DeliveryMethod.Email false none none
managedReport DeliveryMethod.ManagedReport false none none

DeliveryMethod.Email

{
  "userIds": [
    0
  ],
  "recipients": {
    "addresses": [
      "string"
    ],
    "pgpKey": "string"
  }
}

Properties

Name Type Required Restrictions Description
userIds [integer] false none none
recipients DeliveryMethod.Recipients false none none

DeliveryMethod.ManagedReport

{
  "name": "string",
  "tags": "string"
}

Properties

Name Type Required Restrictions Description
name string false none The name of the entry.
tags string false none none

DeliveryMethod.Recipients

{
  "addresses": [
    "string"
  ],
  "pgpKey": "string"
}

Properties

Name Type Required Restrictions Description
addresses [string] false none none
pgpKey string false none none

ConsumptionStats

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "organization": "string",
  "salesAccountId": "string",
  "periodStart": "2019-08-24T14:15:22Z",
  "periodEnd": "2019-08-24T14:15:22Z",
  "appliancePeriodEnd": "2019-08-24T14:15:22Z",
  "netsecAssets": 0,
  "netsecScans": 0,
  "netsecInternalAssets": 0,
  "netsecInternalScans": 0,
  "netsecApplianceAssets": 0,
  "netsecApplianceScans": 0,
  "netsecApplianceExternalAssets": 0,
  "netsecApplianceExternalScans": 0,
  "complianceAssets": 0,
  "complianceScans": 0,
  "complianceInternalAssets": 0,
  "complianceInternalScans": 0,
  "complianceApplianceAssets": 0,
  "complianceApplianceScans": 0,
  "complianceApplianceExternalAssets": 0,
  "complianceApplianceExternalScans": 0,
  "pciAssets": 0,
  "pciScans": 0,
  "scaleAssets": 0,
  "scaleScans": 0,
  "scaleInternalAssets": 0,
  "scaleApplianceAssets": 0,
  "scaleApplianceScans": 0,
  "scaleApplianceExternalScans": 0,
  "scaleApplianceExternalAssets": 0,
  "cloudsecAssets": 0,
  "cloudsecScans": 0,
  "networkDiscoveryScans": 0,
  "networkDiscoveryApplianceScans": 0,
  "cloudDiscoveryScans": 0,
  "cloudDiscoveryApplianceScans": 0,
  "networkAssets": 0,
  "networkScans": 0,
  "networkApplianceAssets": 0,
  "networkApplianceScans": 0,
  "dockerImageDiscoveryScans": 0,
  "dockerImageAssets": 0,
  "dockerImageScans": 0,
  "dockerImageDiscoveryApplianceScans": 0,
  "dockerImageApplianceAssets": 0,
  "dockerImageApplianceScans": 0,
  "outscanNXAssets": 0,
  "outscanNXApplianceAssets": 0
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false read-only The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
customerName string false read-only none
organization string false read-only none
salesAccountId string false read-only none
periodStart string(date-time) false none The consumption period start date
periodEnd string(date-time) false none The consumption period end date
appliancePeriodEnd string(date-time) false none The appliance consumption period start date
netsecAssets integer(int32) false none The netsec assets
netsecScans integer(int32) false none The netsec scans
netsecInternalAssets integer(int32) false none The netsec internal assets
netsecInternalScans integer(int32) false none The netsec internal scans
netsecApplianceAssets integer(int32) false none The netsec appliance assets
netsecApplianceScans integer(int32) false none The netsec appliance scans
netsecApplianceExternalAssets integer(int32) false none The netsec appliance external assets
netsecApplianceExternalScans integer(int32) false none The netsec appliance external scans
complianceAssets integer(int32) false none The compliance assets
complianceScans integer(int32) false none The compliance scans
complianceInternalAssets integer(int32) false none The compliance internal assets
complianceInternalScans integer(int32) false none The compliance internal scans
complianceApplianceAssets integer(int32) false none The compliance appliance assets
complianceApplianceScans integer(int32) false none The compliance appliance scans
complianceApplianceExternalAssets integer(int32) false none The compliance appliance external assets
complianceApplianceExternalScans integer(int32) false none The compliance appliance external scans
pciAssets integer(int32) false none The pci assets
pciScans integer(int32) false none The pci scans
scaleAssets integer(int32) false none The scale assets
scaleScans integer(int32) false none The scale scans
scaleInternalAssets integer(int32) false none The scale internal assets
scaleApplianceAssets integer(int32) false none The scale appliance assets
scaleApplianceScans integer(int32) false none The scale appliance scans
scaleApplianceExternalScans integer(int32) false none The scale appliance external scans
scaleApplianceExternalAssets integer(int32) false none The scale appliance external assets
cloudsecAssets integer(int32) false none The cloudsec assets
cloudsecScans integer(int32) false none The cloudsec scans
networkDiscoveryScans integer(int32) false none The network discovery scans
networkDiscoveryApplianceScans integer(int32) false none The network discovery appliance scans
cloudDiscoveryScans integer(int32) false none The cloud discovery scans
cloudDiscoveryApplianceScans integer(int32) false none The cloud discovery appliance scans
networkAssets integer(int32) false none The network assets
networkScans integer(int32) false none The network scans
networkApplianceAssets integer(int32) false none The network appliance assets
networkApplianceScans integer(int32) false none The network appliance scans
dockerImageDiscoveryScans integer(int32) false none The docker image discovery scans
dockerImageAssets integer(int32) false none The docker image assets
dockerImageScans integer(int32) false none The docker image scans
dockerImageDiscoveryApplianceScans integer(int32) false none The docker image discovery appliance scans
dockerImageApplianceAssets integer(int32) false none The docker image appliance assets
dockerImageApplianceScans integer(int32) false none The docker image appliance scans
outscanNXAssets integer(int32) false none The outscan NX assets
outscanNXApplianceAssets integer(int32) false none The outscan NX appliance assets

CredentialClass

{
  "id": 0,
  "name": "string",
  "hidden": true
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
name string false read-only The name of the entry.
hidden boolean false read-only none

Customer

{
  "id": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "country": "string",
  "active": true,
  "features": [
    "string"
  ],
  "awsExternalId": "string",
  "uuid": "string",
  "organization": "string",
  "organizationUuid": "string",
  "farsightProducts": [
    "string"
  ],
  "hasAnalytics": true,
  "salesAccountId": "string",
  "assetMigration": "2019-08-24T14:15:22Z",
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string",
  "state": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string false read-only The name of the entry.
country string false read-only Country associated with the entry.
active boolean false read-only Determines if the entry is active or not.
features [string] false none none
awsExternalId string false read-only none
uuid string false read-only The UUID of the entry.
organization string false read-only none
organizationUuid string false read-only none
farsightProducts [string] false read-only none
hasAnalytics boolean false read-only none
salesAccountId string false read-only none
assetMigration string(date-time) false none none
customerSuccessManagerEmail string false read-only The email to the customer success manager responsible for this customer
accountManagerEmail string false read-only The email to the account manager responsible for this customer
state string false read-only none
tags [Tag] false read-only The tags

UsageStats

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "customerName": "string",
  "organization": "string",
  "salesAccountId": "string",
  "statsUpdated": "2019-08-24T14:15:22Z",
  "applianceStatsUpdated": "2019-08-24T14:15:22Z",
  "scaleConfigurations": 0,
  "scoutConfigurations": 0,
  "cloudsecConfigurations": 0,
  "applianceScaleConfigurations": 0,
  "users": 0,
  "lastLogin": "2019-08-24T14:15:22Z",
  "applianceUsers": 0,
  "applianceLastLogin": "2019-08-24T14:15:22Z",
  "findingsCritical": 0,
  "findingsHigh": 0,
  "findingsMedium": 0,
  "findingsLow": 0,
  "findingsRecommendations": 0,
  "applianceFindingsCritical": 0,
  "applianceFindingsHigh": 0,
  "applianceFindingsMedium": 0,
  "applianceFindingsLow": 0,
  "applianceFindingsRecommendations": 0,
  "scans": 0,
  "lastScan": "2019-08-24T14:15:22Z",
  "applianceScans": 0,
  "applianceLastScan": "2019-08-24T14:15:22Z",
  "accountsAws": 0,
  "accountsGcp": 0,
  "accountsAzure": 0,
  "accountsVsphere": 0,
  "accountsBasic": 0,
  "accountsWeb": 0,
  "applianceAccountsAws": 0,
  "applianceAccountsGcp": 0,
  "applianceAccountsAzure": 0,
  "applianceAccountsVsphere": 0,
  "applianceAccountsBasic": 0,
  "applianceAccountsWeb": 0,
  "cyr3conAssets": 0,
  "cyr3conApplianceAssets": 0,
  "agents": 0,
  "agentsScanned": 0,
  "agentsOutdated": 0,
  "applianceAgents": 0,
  "applianceAgentsScanned": 0,
  "applianceAgentsOutdated": 0
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
customerName string false read-only none
organization string false read-only none
salesAccountId string false read-only none
statsUpdated string(date-time) false none none
applianceStatsUpdated string(date-time) false none none
scaleConfigurations integer(int32) false none none
scoutConfigurations integer(int32) false none none
cloudsecConfigurations integer(int32) false none none
applianceScaleConfigurations integer(int32) false none none
users integer(int32) false none none
lastLogin string(date-time) false none none
applianceUsers integer(int32) false none none
applianceLastLogin string(date-time) false none none
findingsCritical integer(int32) false none none
findingsHigh integer(int32) false none none
findingsMedium integer(int32) false none none
findingsLow integer(int32) false none none
findingsRecommendations integer(int32) false none none
applianceFindingsCritical integer(int32) false none none
applianceFindingsHigh integer(int32) false none none
applianceFindingsMedium integer(int32) false none none
applianceFindingsLow integer(int32) false none none
applianceFindingsRecommendations integer(int32) false none none
scans integer(int32) false none none
lastScan string(date-time) false none none
applianceScans integer(int32) false none none
applianceLastScan string(date-time) false none none
accountsAws integer(int32) false none none
accountsGcp integer(int32) false none none
accountsAzure integer(int32) false none none
accountsVsphere integer(int32) false none none
accountsBasic integer(int32) false none none
accountsWeb integer(int32) false none none
applianceAccountsAws integer(int32) false none none
applianceAccountsGcp integer(int32) false none none
applianceAccountsAzure integer(int32) false none none
applianceAccountsVsphere integer(int32) false none none
applianceAccountsBasic integer(int32) false none none
applianceAccountsWeb integer(int32) false none none
cyr3conAssets integer(int32) false none none
cyr3conApplianceAssets integer(int32) false none none
agents integer(int32) false none none
agentsScanned integer(int32) false none none
agentsOutdated integer(int32) false none none
applianceAgents integer(int32) false none none
applianceAgentsScanned integer(int32) false none none
applianceAgentsOutdated integer(int32) false none none

Dashboard

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "cards": [
    {
      "name": "string",
      "data": "string",
      "width": 0,
      "height": 0,
      "x": 0,
      "y": 0
    }
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
cards [Dashboard.Card] false none none
tags [Tag] false read-only [The tags]

Dashboard.Card

{
  "name": "string",
  "data": "string",
  "width": 0,
  "height": 0,
  "x": 0,
  "y": 0
}

Properties

Name Type Required Restrictions Description
name string false none The name of the entry.
data string false none none
width integer(int32) false none none
height integer(int32) false none none
x integer(int32) false none none
y integer(int32) false none none

FormDataContentDisposition

{
  "type": "string",
  "parameters": {
    "property1": "string",
    "property2": "string"
  },
  "fileName": "string",
  "creationDate": "2019-08-24T14:15:22Z",
  "modificationDate": "2019-08-24T14:15:22Z",
  "readDate": "2019-08-24T14:15:22Z",
  "size": 0,
  "name": "string"
}

Properties

Name Type Required Restrictions Description
type string false none none
parameters object false none none
» additionalProperties string false none none
fileName string false none none
creationDate string(date-time) false none none
modificationDate string(date-time) false none none
readDate string(date-time) false none none
size integer(int64) false none none
name string false none The name of the entry.

ObjectDecryptionRequest

{
  "bucket": "string",
  "key": "string",
  "unsigned": true,
  "auditComment": "string"
}

Properties

Name Type Required Restrictions Description
bucket string true none none
key string true none none
unsigned boolean false none none
auditComment string true none none

DownloadCacheEntry

{
  "created": "2019-08-24T14:15:22Z",
  "name": "string",
  "key": "string",
  "status": "string",
  "size": 0,
  "token": "string",
  "tokenExpires": "2019-08-24T14:15:22Z",
  "type": "ATTACHMENT"
}

Properties

Name Type Required Restrictions Description
created string(date-time) false read-only The timestamp when the entry was created.
name string false read-only The name of the entry.
key string false read-only none
status string false read-only none
size integer(int64) false read-only none
token string false read-only none
tokenExpires string(date-time) false read-only none
type string false read-only none

Enumerated Values

Property Value
type ATTACHMENT
type REPORT
type BLUEPRINT
type INTERNAL_BLUEPRINT
type MANAGED_REPORT
type DECRYPTED_OBJECT
type LOGS
type AGENT_INSTALLER
type UPDATE_PACKAGE

DatabaseSetting

{
  "host": "string",
  "port": 1,
  "password": "string",
  "ssl": true,
  "certificate": "string"
}

Properties

Name Type Required Restrictions Description
host string true none none
port integer(int32) false none none
password string false none none
ssl boolean false none none
certificate string false none none

BaseContentConfiguration

{
  "integrationType": "WEBHOOK"
}

Properties

Name Type Required Restrictions Description
integrationType string true none none

Enumerated Values

Property Value
integrationType WEBHOOK
integrationType EMAIL
integrationType LOG
integrationType SYSLOG
integrationType SNMP
integrationType NOTIFICATION

EmailContentConfiguration

{
  "integrationType": "WEBHOOK",
  "subject": "string",
  "userList": [
    0
  ],
  "userEmailAddresses": [
    "string"
  ],
  "content": "string",
  "htmlContent": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» subject string false none none
» userList [integer] false none none
» userEmailAddresses [string] false none none
» content string false none none
» htmlContent string false none none

EventSubscription

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "trigger": "SCHEDULE_CREATED",
  "viewTemplateId": 0,
  "integrationId": 0,
  "integrationType": "WEBHOOK",
  "enabled": true,
  "settings": {
    "timeBefore": 0,
    "timeSince": 0,
    "diskUsage": 0,
    "metric": "NETSEC_ASSETS",
    "limit": 0,
    "userId": 0,
    "from": "TO_REVIEW",
    "to": "TO_REVIEW",
    "entityType": "FINDING"
  },
  "contentConfiguration": {
    "integrationType": "WEBHOOK"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
trigger string true none none
viewTemplateId integer(int32) false none none
integrationId integer(int32) false none none
integrationType string false read-only none
enabled boolean false none Determines if the entry is enabled or not.
settings EventSubscription.Settings false none none
contentConfiguration BaseContentConfiguration false none none
tags [Tag] false read-only The tags

Enumerated Values

Property Value
trigger SCHEDULE_CREATED
trigger SCHEDULE_DELETED
trigger SCHEDULE_MODIFIED
trigger SCHEDULE_SCHEDULED
trigger CONFIGURATION_CREATED
trigger CONFIGURATION_DELETED
trigger CONFIGURATION_MODIFIED
trigger CONFIGURATION_STARTED
trigger CONFIGURATION_DONE
trigger SCAN_STARTED
trigger SCAN_STOPPED
trigger SCAN_DONE
trigger ASSET_NOT_RECENTLY_SEEN
trigger ASSET_SEEN
trigger ASSET_CREATED
trigger ASSET_DELETED
trigger ASSET_MODIFIED
trigger FINDING_SEEN
trigger FINDING_CREATED
trigger FINDING_MODIFIED
trigger FINDING_STATUS_TRANSITIONED
trigger FINDING_RISK_ACCEPTED_EXPIRATION
trigger WATCHED_FINDING_UPDATED
trigger USER_CREATED
trigger USER_DELETED
trigger USER_MODIFIED
trigger USER_LOGIN_ATTEMPT
trigger USER_PASSWORD_RESET
trigger ROLE_CREATED
trigger ROLE_DELETED
trigger ROLE_MODIFIED
trigger RESOURCE_GROUP_CREATED
trigger RESOURCE_GROUP_DELETED
trigger RESOURCE_GROUP_MODIFIED
trigger NEW_RELEASE_NOTES
trigger HIAB_SCANNER_MISSING
trigger HIAB_UPDATE_DONE
trigger HIAB_UPDATE_FAILED
trigger HIAB_BACKUP_DONE
trigger HIAB_BACKUP_FAILED
trigger HIAB_MAINTENANCE_PLAN_DONE
trigger HIAB_DISK_USAGE_HIGH
trigger HIAB_REBOOTED
trigger HIAB_REMOTE_SUPPORT
trigger OUTSCAN_CONSULTANCY
trigger CONSUMPTION_ABSOLUTE
trigger CONSUMPTION_RELATIVE
trigger WORKFLOW_CREATED
trigger WORKFLOW_DELETED
trigger WORKFLOW_MODIFIED
trigger WORKFLOW_STARTED
trigger WORKFLOW_DONE
trigger COMPLIANCE_CREATED
trigger COMPLIANCE_MODIFIED
trigger COMPLIANCE_RISK_EXCEPTION
trigger COMPLIANCE_RISK_EXCEPTION_EXPIRATION
trigger COMMENT_CREATED
trigger EXECUTIVE_SUMMARY_UPDATED
trigger ACTIVITY_FEED_UPDATED
integrationType WEBHOOK
integrationType EMAIL
integrationType LOG
integrationType SYSLOG
integrationType SNMP
integrationType NOTIFICATION

EventSubscription.Settings

{
  "timeBefore": 0,
  "timeSince": 0,
  "diskUsage": 0,
  "metric": "NETSEC_ASSETS",
  "limit": 0,
  "userId": 0,
  "from": "TO_REVIEW",
  "to": "TO_REVIEW",
  "entityType": "FINDING"
}

Properties

Name Type Required Restrictions Description
timeBefore integer(int32) false none none
timeSince integer(int32) false none none
diskUsage integer(int32) false none none
metric string false none none
limit integer(int32) false none none
userId integer(int32) false none none
from string false none none
to string false none none
entityType string false none none

Enumerated Values

Property Value
metric NETSEC_ASSETS
metric NETSEC_SCANS
metric NETSEC_INTERNAL_ASSETS
metric NETSEC_INTERNAL_SCANS
metric NETSEC_APPLIANCE_ASSETS
metric NETSEC_APPLIANCE_SCANS
metric NETSEC_APPLIANCE_EXTERNAL_ASSETS
metric NETSEC_APPLIANCE_EXTERNAL_SCANS
metric COMPLIANCE_ASSETS
metric COMPLIANCE_SCANS
metric COMPLIANCE_INTERNAL_ASSETS
metric COMPLIANCE_INTERNAL_SCANS
metric COMPLIANCE_APPLIANCE_ASSETS
metric COMPLIANCE_APPLIANCE_SCANS
metric COMPLIANCE_APPLIANCE_EXTERNAL_ASSETS
metric COMPLIANCE_APPLIANCE_EXTERNAL_SCANS
metric PCI_ASSETS
metric PCI_SCANS
metric SCALE_ASSETS
metric SCALE_SCANS
metric SCALE_INTERNAL_ASSETS
metric SCALE_APPLIANCE_ASSETS
metric SCALE_APPLIANCE_SCANS
metric SCALE_APPLIANCE_EXTERNAL_ASSETS
metric SCALE_APPLIANCE_EXTERNAL_SCANS
metric CLOUDSEC_ASSETS
metric CLOUDSEC_SCANS
metric NETWORK_DISCOVERY_SCANS
metric NETWORK_DISCOVERY_APPLIANCE_SCANS
metric CLOUD_DISCOVERY_SCANS
metric CLOUD_DISCOVERY_APPLIANCE_SCANS
metric NETWORK_ASSETS
metric NETWORK_SCANS
metric NETWORK_APPLIANCE_ASSETS
metric NETWORK_APPLIANCE_SCANS
metric DOCKER_IMAGE_DISCOVERY_SCANS
metric DOCKER_IMAGE_ASSETS
metric DOCKER_IMAGE_SCANS
metric DOCKER_IMAGE_DISCOVERY_APPLIANCE_SCANS
metric DOCKER_IMAGE_APPLIANCE_ASSETS
metric DOCKER_IMAGE_APPLIANCE_SCANS
metric OUTSCAN_NX_ASSETS
metric OUTSCAN_NX_APPLIANCE_ASSETS
from TO_REVIEW
from TO_VERIFY
from TO_QA
from TO_PUBLISH
from REJECTED
from PRESENT
from ACCEPTED
from FALSE_POSITIVE
from PENDING_VERIFICATION
from FIXED
from IRREPRODUCIBLE
to TO_REVIEW
to TO_VERIFY
to TO_QA
to TO_PUBLISH
to REJECTED
to PRESENT
to ACCEPTED
to FALSE_POSITIVE
to PENDING_VERIFICATION
to FIXED
to IRREPRODUCIBLE
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK

LogContentConfiguration

{
  "integrationType": "WEBHOOK",
  "content": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» content string false none none

NotificationContentConfiguration

{
  "integrationType": "WEBHOOK",
  "userId": 0,
  "subject": "string",
  "message": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» userId integer(int32) false none none
» subject string false none none
» message string false none none

SnmpContentConfiguration

{
  "integrationType": "WEBHOOK",
  "objectId": "string",
  "content": "string",
  "maxRetries": 10,
  "retryInterval": 1
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» objectId string false none none
» content string false none none
» maxRetries integer(int32) false none none
» retryInterval integer(int32) false none none

SyslogContentConfiguration

{
  "integrationType": "WEBHOOK",
  "format": "RFC5424",
  "applicationName": "string",
  "processId": "string",
  "messageId": "string",
  "tag": "string",
  "facility": 0,
  "severity": 0,
  "structuredData": "string",
  "content": "string",
  "maxRetries": 10,
  "retryInterval": 1
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» format string false none none
» applicationName string false none none
» processId string false none none
» messageId string false none none
» tag string false none none
» facility integer(int32) false none none
» severity integer(int32) false none none
» structuredData string false none none
» content string false none none
» maxRetries integer(int32) false none none
» retryInterval integer(int32) false none none

Enumerated Values

Property Value
format RFC5424
format RFC3164
format LEGACY

WebhookContentConfiguration

{
  "integrationType": "WEBHOOK",
  "content": "string",
  "maxRetries": 10,
  "retryInterval": 1,
  "httpMethod": "string",
  "httpHeaders": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseContentConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» content string false none none
» maxRetries integer(int32) false none none
» retryInterval integer(int32) false none none
» httpMethod string false none none
» httpHeaders string false none none

EventTemplateVariable

{
  "key": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
key string false none The event template variable name
description string false none Description of the entry.

FindingTemplateGroup

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
parentId integer(int32) false none The ID of the parent entry.

FindingTemplate

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "uuid": "string",
  "groupId": 0,
  "cvssV2Score": 0,
  "cvssV3Score": 0,
  "cvssV2Severity": "RECOMMENDATION",
  "cvssV3Severity": "RECOMMENDATION",
  "template": {
    "name": "string",
    "description": "string",
    "remediation": "string",
    "impact": "string",
    "recreation": "string",
    "cwe": 0,
    "cvssV2Vector": "string",
    "cvssV3Vector": "string"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
uuid string false none The UUID of the entry.
groupId integer(int32) false none none
cvssV2Score number(float) false read-only The CVSS V2 score
cvssV3Score number(float) false read-only The CVSS V3 score
cvssV2Severity string false read-only The CVSS V2 severity
cvssV3Severity string false read-only The CVSS V3 severity
template FindingTemplate.Template true none The finding template attributes
tags [Tag] false read-only The tags

Enumerated Values

Property Value
cvssV2Severity RECOMMENDATION
cvssV2Severity LOW
cvssV2Severity MEDIUM
cvssV2Severity HIGH
cvssV2Severity CRITICAL
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL

FindingTemplate.Template

{
  "name": "string",
  "description": "string",
  "remediation": "string",
  "impact": "string",
  "recreation": "string",
  "cwe": 0,
  "cvssV2Vector": "string",
  "cvssV3Vector": "string"
}

The finding template attributes

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
description string false none Description of the entry.
remediation string false none none
impact string false none none
recreation string false none none
cwe integer(int32) false none CWE classification of the entry.
cvssV2Vector string false none none
cvssV3Vector string false none none

FindingExportAsEmail

{
  "emailAddresses": [
    "string"
  ],
  "comment": "string"
}

Properties

Name Type Required Restrictions Description
emailAddresses [string] true none none
comment string false none none

Attachment

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "findingId": 0,
  "type": "OTHER",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
findingId integer(int32) false read-only none
type string false read-only none
name string false read-only The name of the entry.

Enumerated Values

Property Value
type OTHER
type IMAGE
type TEXT
type VIDEO
type ARCHIVE

AppCheckMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string",
  "checkId": 0,
  "vulnerabilityId": "string",
  "gatheredInformation": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMatch false none The match list

and

Name Type Required Restrictions Description
anonymous object false none none
» checkId integer(int32) false none none
» vulnerabilityId string false none none
» gatheredInformation string false none none

BaseMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string"
}

The match list

Properties

Name Type Required Restrictions Description
type string true none none
service Service false none none
patternUuid string false none none

Enumerated Values

Property Value
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC

ComplianceMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string",
  "requirementId": 0,
  "compliant": true,
  "message": "string",
  "error": "string",
  "humanCheck": true,
  "faultyItems": [
    [
      "string"
    ]
  ],
  "checkedAssets": [
    [
      "string"
    ]
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMatch false none The match list

and

Name Type Required Restrictions Description
anonymous object false none none
» requirementId integer(int32) false none none
» compliant boolean false none none
» message string false none none
» error string false none none
» humanCheck boolean false none none
» faultyItems [array] false none none
» checkedAssets [array] false none none

ComponentMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string",
  "name": "string",
  "presentableName": "string",
  "version": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMatch false none The match list

and

Name Type Required Restrictions Description
anonymous object false none none
» name string false none none
» presentableName string false none none
» version string false none none

Finding

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "checkId": 0,
  "findingTemplateId": 0,
  "cvssScore": 0,
  "cvssSeverity": "RECOMMENDATION",
  "cvssV2Score": 0,
  "cvssV2BaseScore": 0,
  "cvssV2TemporalScore": 0,
  "cvssV2EnvironmentalScore": 0,
  "cvssV2Vector": "string",
  "cvssV2Severity": "RECOMMENDATION",
  "cvssV3Score": 0,
  "cvssV3BaseScore": 0,
  "cvssV3TemporalScore": 0,
  "cvssV3EnvironmentalScore": 0,
  "cvssV3Vector": "string",
  "cvssV3Severity": "RECOMMENDATION",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "isAccepted": true,
  "accepted": "2019-08-24T14:15:22Z",
  "acceptedComment": "string",
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "fixed": "2019-08-24T14:15:22Z",
  "commentsCount": 0,
  "customName": "string",
  "customDescription": "string",
  "customCve": "string",
  "customCwe": 0,
  "customBugTraq": "string",
  "customSolution": "string",
  "solutionPatches": [
    "string"
  ],
  "customCvssV2Vector": "string",
  "customCvssV3Vector": "string",
  "source": [
    "SCOUT"
  ],
  "activeSubscriptionTypes": [
    "DAST"
  ],
  "name": "string",
  "description": "string",
  "cve": "string",
  "cwe": "string",
  "solutionType": "NOT_CLASSIFIED",
  "solution": "string",
  "solutionProduct": "string",
  "solutionTitle": "string",
  "solutionUuid": "string",
  "exploitAvailable": true,
  "matchIds": [
    0
  ],
  "attachmentIds": [
    0
  ],
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "status": "TO_REVIEW",
  "commentPendingSince": "2019-08-24T14:15:22Z",
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "verified": "2019-08-24T14:15:22Z",
  "verifiedBy": "string",
  "verifiedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "rejected": "2019-08-24T14:15:22Z",
  "rejectedBy": "string",
  "rejectedById": 0,
  "recreation": "string",
  "alternativeRecreation": "string",
  "impact": "string",
  "sans25": 0,
  "owasp2004": [
    0
  ],
  "owasp2007": [
    0
  ],
  "owasp2010": [
    0
  ],
  "owasp2013": [
    0
  ],
  "owasp2017": [
    0
  ],
  "owasp2021": [
    0
  ],
  "capec": [
    0
  ],
  "assetId": 0,
  "assetName": "string",
  "potential": true,
  "softwareComponent": "string",
  "cyrating": 0,
  "cyratingDelta": 0,
  "exploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "seenLastScan": true,
  "watching": true,
  "age": 0,
  "assetGroupIds": [
    0
  ],
  "sentTo": [
    "string"
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "bugTraq": [
    0
  ],
  "secureCodeWarrior": {
    "name": "string",
    "description": "string",
    "url": "string"
  },
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "matches": [
    {
      "type": "WAS",
      "service": {
        "name": "string",
        "scheme": "string",
        "port": 0,
        "protocol": "TCP",
        "virtualHost": "string"
      },
      "patternUuid": "string"
    }
  ],
  "classifications": {
    "sans25": 0,
    "capec": [
      0
    ],
    "owasp2004": [
      0
    ],
    "owasp2007": [
      0
    ],
    "owasp2010": [
      0
    ],
    "owasp2013": [
      0
    ],
    "owasp2017": [
      0
    ],
    "owasp2021": [
      0
    ]
  },
  "ports": [
    {
      "name": "string",
      "port": 0,
      "protocol": "TCP"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
checkId integer(int32) false none The check id associated with the finding
findingTemplateId integer(int32) false none The finding template from which the finding was created
cvssScore number(float) false read-only The CVSS score, take CVSS V3 if available, otherwise CVSS V2
cvssSeverity string false read-only The CVSS severity, take CVSS V3 severity if available, otherwise CVSS V2
cvssV2Score number(float) false read-only The CVSS V2 score
cvssV2BaseScore number(float) false read-only The CVSS V2 base score
cvssV2TemporalScore number(float) false read-only The CVSS V2 temporal score
cvssV2EnvironmentalScore number(float) false read-only The CVSS V2 environmental score
cvssV2Vector string false read-only The CVSS V2 vector
cvssV2Severity string false read-only The CVSS V2 severity
cvssV3Score number(float) false read-only The CVSS V3 score
cvssV3BaseScore number(float) false read-only The CVSS V3 base score
cvssV3TemporalScore number(float) false read-only The CVSS V3 temporal score
cvssV3EnvironmentalScore number(float) false read-only The CVSS V3 environmental score
cvssV3Vector string false read-only The CVSS V3 vector
cvssV3Severity string false read-only The CVSS V3 severity
falsePositive string(date-time) false read-only The date when marked as false positive
falsePositiveComment string false read-only The false positive comment
isAccepted boolean false read-only Set to true when the risk is accepted
accepted string(date-time) false read-only The date when the finding was marked as accepted risk.
acceptedComment string false read-only The accepted comment
acceptedUntil string(date-time) false read-only The date when the risk acceptance will expire.
fixed string(date-time) false read-only The date when the risk was fixed
commentsCount integer(int32) false read-only The number of comments
customName string false none The custom name
customDescription string false none The custom description
customCve string false none The custom CVE
customCwe integer(int32) false none The custom CWE
customBugTraq string false none The custom bug track
customSolution string false none The custom solution
solutionPatches [string] false none The solution patches
customCvssV2Vector string false none The custom CVSS V2 vector
customCvssV3Vector string false none The custom CVSS V3 vector
source [string] false read-only The scan sources
activeSubscriptionTypes [string] false read-only The finding's active subscription types
name string false read-only The name of the entry.
description string false read-only Description of the entry.
cve string false read-only The finding CVE
cwe string false read-only CWE classification of the entry.
solutionType string false read-only The solution type
solution string false read-only The solution
solutionProduct string false read-only The solution product
solutionTitle string false read-only The solution title
solutionUuid string false read-only The solution uuid
exploitAvailable boolean false read-only Set to true when exploits are available
matchIds [integer] false none The match ids
attachmentIds [integer] false read-only The attachments ids
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
firstScanId integer(int32) false read-only The id of the first scan
lastScanId integer(int32) false read-only The id of the last scan
status string false read-only The finding status
commentPendingSince string(date-time) false read-only The date since comment is pending
reviewed string(date-time) false read-only The finding reviewed date
reviewedBy string false read-only The username of the user that reviewed the finding
reviewedById integer(int32) false read-only The user ID of the user that reviewed the finding
verified string(date-time) false read-only The finding verified date
verifiedBy string false read-only The username of the user that verified the finding
verifiedById integer(int32) false read-only The user ID of the user that verified the finding
qualityAssured string(date-time) false read-only The finding quality assured date
qualityAssuredBy string false read-only The username of the user that quality assured the finding
qualityAssuredById integer(int32) false read-only The user ID of the user that quality assured the finding
published string(date-time) false read-only The finding published date
publishedBy string false read-only The username of the user that published the finding
publishedById integer(int32) false read-only The user ID of the user that published the finding
rejected string(date-time) false read-only The finding rejected date
rejectedBy string false read-only The username of the user that rejected the finding
rejectedById integer(int32) false read-only The user ID of the user that rejected the finding
recreation string false none The recreation
alternativeRecreation string false none The alternate recreation
impact string false none The impact
sans25 integer(int32) false read-only SANS 25 classification of the entry.
owasp2004 [integer] false read-only An array of OWASP Top 10 2004 classifications of the entry.
owasp2007 [integer] false read-only An array of OWASP Top 10 2007 classifications of the entry.
owasp2010 [integer] false read-only An array of OWASP Top 10 2010 classifications of the entry.
owasp2013 [integer] false read-only An array of OWASP Top 10 2013 classifications of the entry.
owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
owasp2021 [integer] false read-only The OWASP 2021 scores
capec [integer] false read-only CAPEC classification of the entry.
assetId integer(int32) true none The asset id
assetName string false read-only The asset name
potential boolean false none The finding potential. Set to true when potential false positive
softwareComponent string false read-only The software component
cyrating number(double) false read-only The cyrating
cyratingDelta number(double) false read-only The cyrating delta
exploitProbability number(double) false read-only The exploit probability
exploitProbabilityDelta number(double) false read-only The exploit probability delta
cyratingUpdated string(date-time) false read-only The cyrating updated date
cyratingLastSeen string(date-time) false read-only The cyrating last seen date
seenLastScan boolean false read-only Set to true if finding was seen in last scan
watching boolean false read-only Whether the current user is watching this finding
age integer(int32) false read-only The finding's age in days since creation
assetGroupIds [integer] false none The asset group ids
sentTo [string] false read-only A list of e-mail addresses that this finding has been sent to
tags [Tag] false read-only The tags
bugTraq [integer] false read-only An array of Bugtraq reference IDs.
secureCodeWarrior SecureCodeWarrior false none The secure code warrior information on the vulnerability description and training
farsight Farsight false none The farsight concists in additional information on risk such as likelihood, threat activity
matches [BaseMatch] false read-only The match list
classifications Classification.Classifications false none The classifications such as CAPEC, OWASP20XX
ports [Port] false read-only Ports information on the vulnerability description

Enumerated Values

Property Value
cvssSeverity RECOMMENDATION
cvssSeverity LOW
cvssSeverity MEDIUM
cvssSeverity HIGH
cvssSeverity CRITICAL
cvssV2Severity RECOMMENDATION
cvssV2Severity LOW
cvssV2Severity MEDIUM
cvssV2Severity HIGH
cvssV2Severity CRITICAL
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE
status TO_REVIEW
status TO_VERIFY
status TO_QA
status TO_PUBLISH
status REJECTED
status PRESENT
status ACCEPTED
status FALSE_POSITIVE
status PENDING_VERIFICATION
status FIXED
status IRREPRODUCIBLE

GatheredInformationMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string",
  "checkId": 0,
  "gatheredInformation": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMatch false none The match list

and

Name Type Required Restrictions Description
anonymous object false none none
» checkId integer(int32) false none none
» gatheredInformation string false none none

Port

{
  "name": "string",
  "port": 0,
  "protocol": "TCP"
}

Ports information on the vulnerability description

Properties

Name Type Required Restrictions Description
name string false none The name of the entry.
port integer(int32) false none none
protocol string false none none

Enumerated Values

Property Value
protocol TCP
protocol UDP

Service

{
  "name": "string",
  "scheme": "string",
  "port": 0,
  "protocol": "TCP",
  "virtualHost": "string"
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
scheme string false none none
port integer(int32) false none none
protocol string true none none
virtualHost string false none none

Enumerated Values

Property Value
protocol TCP
protocol UDP

WasMatch

{
  "type": "WAS",
  "service": {
    "name": "string",
    "scheme": "string",
    "port": 0,
    "protocol": "TCP",
    "virtualHost": "string"
  },
  "patternUuid": "string",
  "checkId": 0,
  "url": "string",
  "method": "string",
  "body": "string",
  "auxData": [
    "string"
  ],
  "context": "string",
  "contextStart": 0,
  "contextLength": 0
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMatch false none The match list

and

Name Type Required Restrictions Description
anonymous object false none none
» checkId integer(int32) false none none
» url string false none none
» method string false none none
» body string false none none
» auxData [string] false none none
» context string false none none
» contextStart integer(int32) false none none
» contextLength integer(int32) false none none

FindingDelta

{
  "firstSeen": 0,
  "lastSeen": 0,
  "unchanged": 0,
  "asset": {
    "id": 0,
    "customerId": 0,
    "created": "2019-08-24T14:15:22Z",
    "updated": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "updatedBy": "string",
    "createdById": 0,
    "updatedById": 0,
    "name": "string",
    "source": [
      "SCOUT"
    ],
    "assetIdentifierIds": [
      0
    ],
    "assetIdentifierTypes": [
      "IP"
    ],
    "dockerImageOs": "string",
    "activeSubscriptionTypes": [
      "DAST"
    ],
    "uuid": "string",
    "firstScanId": 0,
    "lastScanId": 0,
    "compliant": "COMPLIANT",
    "cvssV2EnvironmentalVector": "string",
    "cvssV3EnvironmentalVector": "string",
    "dockerImageProperties": {
      "type": "IP"
    },
    "tags": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "key": "string",
        "value": "string",
        "inherited": true,
        "count": 0
      }
    ],
    "assetIdentifiers": [
      {
        "id": 0,
        "customerId": 0,
        "created": "2019-08-24T14:15:22Z",
        "updated": "2019-08-24T14:15:22Z",
        "createdBy": "string",
        "updatedBy": "string",
        "createdById": 0,
        "updatedById": 0,
        "name": "string",
        "presentableName": "string",
        "type": "IP",
        "firstSeen": "2019-08-24T14:15:22Z",
        "lastSeen": "2019-08-24T14:15:22Z",
        "scannerId": 0,
        "scannerName": "string",
        "ownership": 0,
        "customOwnership": 100,
        "firstScanId": 0,
        "lastScanId": 0,
        "source": [
          "SCOUT"
        ],
        "links": [
          0
        ],
        "assetIds": [
          0
        ],
        "assetNames": [
          "string"
        ],
        "accountIds": [
          0
        ],
        "os": "string",
        "tags": [
          {
            "id": 0,
            "customerId": 0,
            "created": "2019-08-24T14:15:22Z",
            "updated": "2019-08-24T14:15:22Z",
            "createdBy": "string",
            "updatedBy": "string",
            "createdById": 0,
            "updatedById": 0,
            "key": "string",
            "value": "string",
            "inherited": true,
            "count": 0
          }
        ],
        "properties": {
          "type": "IP"
        }
      }
    ],
    "assetGroups": [
      {
        "id": 0,
        "name": "string"
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
firstSeen integer(int32) false read-only Timestamp when the entry was seen for the first time.
lastSeen integer(int32) false read-only Timestamp when the entry was seen last time.
unchanged integer(int32) false read-only none
asset Asset false none none

FindingSolution

{
  "solutionUuid": "string",
  "solutionType": "NOT_CLASSIFIED",
  "solution": "string",
  "solutionProduct": "string",
  "solutionTitle": "string",
  "riskCount": 0,
  "assetCount": 0,
  "severityCount": {
    "critical": 0,
    "high": 0,
    "medium": 0,
    "low": 0,
    "recommendation": 0
  }
}

Properties

Name Type Required Restrictions Description
solutionUuid string false read-only none
solutionType string false read-only none
solution string false read-only none
solutionProduct string false read-only none
solutionTitle string false read-only none
riskCount integer(int32) false read-only none
assetCount integer(int32) false read-only none
severityCount FindingSolution.SeverityCount false none none

Enumerated Values

Property Value
solutionType NOT_CLASSIFIED
solutionType UNKNOWN
solutionType RECONFIGURE
solutionType WORKAROUND
solutionType SOLUTION_IN_PROGRESS
solutionType CONTACT_VENDOR
solutionType UPDATE
solutionType PATCH
solutionType NOT_ACKNOWLEDGED
solutionType NO_SOLUTION
solutionType CONFIGURE_ACCOUNT
solutionType DISABLE
solutionType FILTER
solutionType MALWARE

FindingSolution.SeverityCount

{
  "critical": 0,
  "high": 0,
  "medium": 0,
  "low": 0,
  "recommendation": 0
}

Properties

Name Type Required Restrictions Description
critical integer(int32) false none none
high integer(int32) false none none
medium integer(int32) false none none
low integer(int32) false none none
recommendation integer(int32) false none none

FindingFalsePositive

{
  "falsePositiveComment": "string",
  "sendInfo": true,
  "clarificationRequestComment": "string",
  "sendBlueprint": true
}

Properties

Name Type Required Restrictions Description
falsePositiveComment string true none none
sendInfo boolean false none none
clarificationRequestComment string false none none
sendBlueprint boolean false none none

FindingClarificationRequest

{
  "clarificationRequestComment": "string"
}

Properties

Name Type Required Restrictions Description
clarificationRequestComment string false none none

FindingVerificationRequest

{
  "verificationRequestComment": "string"
}

Properties

Name Type Required Restrictions Description
verificationRequestComment string true none none

FindingAccept

{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}

Properties

Name Type Required Restrictions Description
acceptedUntil string(date-time) true none The date when the risk acceptance will expire.
acceptedComment string false none none

Globals

{
  "awsAccountId": "string",
  "appliance": true,
  "awsAccessKeyAllowRemote": true
}

Properties

Name Type Required Restrictions Description
awsAccountId string false read-only none
appliance boolean false read-only none
awsAccessKeyAllowRemote boolean false read-only none

Timezone

{
  "name": "string",
  "gmtOffset": 0
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
gmtOffset number(double) true none none

AgentIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "agentServerUrl": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» agentServerUrl string false none none

BaseAuthenticationConfiguration

{
  "authenticationType": "BASIC_AUTHENTICATION"
}

Properties

Name Type Required Restrictions Description
authenticationType string true none none

Enumerated Values

Property Value
authenticationType BASIC_AUTHENTICATION
authenticationType OAUTH2_AUTHENTICATION

BaseIntegrationConfiguration

{
  "type": "OBJECT_STORAGE"
}

Properties

Name Type Required Restrictions Description
type string true none none

Enumerated Values

Property Value
type OBJECT_STORAGE
type AGENT
type ENCRYPTION_SERVICE
type EMAIL
type WEBHOOK
type LOG
type SYSLOG
type SNMP
type CYBERARK
type DELINEA
type NOTIFICATION

BasicAuthenticationConfiguration

{
  "authenticationType": "BASIC_AUTHENTICATION",
  "username": "string",
  "password": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseAuthenticationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» username string false none none
» password string false none none

CyberArkIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "url": "string",
  "applicationId": "string",
  "certificate": "string",
  "defaultFolder": "string",
  "defaultSafe": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» url string false none none
» applicationId string false none none
» certificate string false none none
» defaultFolder string false none none
» defaultSafe string false none none

DelineaIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "url": "string",
  "username": "string",
  "password": "string",
  "certificate": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» url string false none none
» username string false none none
» password string false none none
» certificate string false none none

EncryptionServiceIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "encryptionServiceUrl": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» encryptionServiceUrl string false none none

Integration

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "type": "OBJECT_STORAGE",
  "verified": "2019-08-24T14:15:22Z",
  "verifiedBy": "string",
  "verifiedById": 0,
  "verifyStatus": true,
  "configuration": {
    "type": "OBJECT_STORAGE"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
type string false read-only none
verified string(date-time) false read-only none
verifiedBy string false read-only none
verifiedById integer(int32) false read-only none
verifyStatus boolean false read-only none
configuration BaseIntegrationConfiguration true none none
tags [Tag] false read-only [The tags]

Enumerated Values

Property Value
type OBJECT_STORAGE
type AGENT
type ENCRYPTION_SERVICE
type EMAIL
type WEBHOOK
type LOG
type SYSLOG
type SNMP
type CYBERARK
type DELINEA
type NOTIFICATION

OauthV2AuthenticationConfiguration

{
  "authenticationType": "BASIC_AUTHENTICATION",
  "requiredOauthSetting": {
    "authorizeUrl": "string",
    "tokenUrl": "string",
    "clientId": "string",
    "clientSecret": "string"
  },
  "optionalOauthSetting": {
    "audience": "string",
    "scope": [
      "string"
    ]
  },
  "accessToken": "string",
  "accessTokenCreated": "2019-08-24T14:15:22Z",
  "accessTokenExpiresIn": "2019-08-24T14:15:22Z",
  "refreshToken": "string",
  "authorized": true,
  "errorMessage": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseAuthenticationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» requiredOauthSetting OauthV2AuthenticationConfiguration.RequiredOauthSetting false none none
» optionalOauthSetting OauthV2AuthenticationConfiguration.OptionalOauthSetting false none none
» accessToken string false none none
» accessTokenCreated string(date-time) false none none
» accessTokenExpiresIn string(date-time) false none none
» refreshToken string false none none
» authorized boolean false none none
» errorMessage string false none none

OauthV2AuthenticationConfiguration.OptionalOauthSetting

{
  "audience": "string",
  "scope": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
audience string false none none
scope [string] false none none

OauthV2AuthenticationConfiguration.RequiredOauthSetting

{
  "authorizeUrl": "string",
  "tokenUrl": "string",
  "clientId": "string",
  "clientSecret": "string"
}

Properties

Name Type Required Restrictions Description
authorizeUrl string true none none
tokenUrl string true none none
clientId string true none none
clientSecret string true none none

ObjectStorageIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "s3Uri": "string",
  "s3AccessKey": "string",
  "s3SecretKey": "string",
  "s3Certificate": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» s3Uri string false none none
» s3AccessKey string false none none
» s3SecretKey string false none none
» s3Certificate string false none none

SnmpIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "host": "string",
  "port": 1,
  "version": 2,
  "community": "string",
  "username": "string",
  "authPassword": "string",
  "privPassword": "string",
  "engineId": "string",
  "prefix": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» host string false none none
» port integer(int32) false none none
» version integer(int32) false none none
» community string false none none
» username string false none none
» authPassword string false none none
» privPassword string false none none
» engineId string false none none
» prefix string false none none

SyslogIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "host": "string",
  "format": "RFC5424",
  "facility": 0,
  "severity": 0,
  "port": 0,
  "transportType": "TCP",
  "prefix": "string",
  "certificate": "string",
  "audit": true,
  "tls": true,
  "arcsight": true
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» host string false none none
» format string false none none
» facility integer(int32) false none none
» severity integer(int32) false none none
» port integer(int32) false none none
» transportType string false none none
» prefix string false none none
» certificate string false none none
» audit boolean false none none
» tls boolean false none none
» arcsight boolean false none none

Enumerated Values

Property Value
format RFC5424
format RFC3164
format LEGACY
transportType TCP
transportType UDP

WebhookIntegrationConfiguration

{
  "type": "OBJECT_STORAGE",
  "webhookUrl": "string",
  "contentSample": "string",
  "serverCertificate": "string",
  "httpMethod": "string",
  "httpHeaders": "string",
  "authenticationConfiguration": {
    "authenticationType": "BASIC_AUTHENTICATION"
  }
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» webhookUrl string false none none
» contentSample string false none none
» serverCertificate string false none none
» httpMethod string false none none
» httpHeaders string false none none
» authenticationConfiguration BaseAuthenticationConfiguration false none none

ManagedReportGroup

{
  "id": 0,
  "userId": 0,
  "name": "string",
  "parentId": 0,
  "updated": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "count": 0
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
userId integer(int64) false read-only none
name string true none The name of the entry.
parentId integer(int64) false none The ID of the parent entry.
updated string(date-time) false read-only The timestamp when the entry was updated.
created string(date-time) false read-only The timestamp when the entry was created.
count integer(int64) false read-only The total number of entries associated with this entry and its child entries.

ManagedReport

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "size": 0,
  "lastDownloaded": "2019-08-24T14:15:22Z",
  "lastDownloadedBy": "string",
  "uuid": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
size integer(int32) false read-only none
lastDownloaded string(date-time) false read-only none
lastDownloadedBy string false read-only none
uuid string false read-only The UUID of the entry.
tags [Tag] false read-only [The tags]

Match

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "assetId": 0,
  "type": "WAS",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "firstScanId": 0,
  "lastScanId": 0,
  "findingIds": [
    0
  ],
  "source": [
    "SCOUT"
  ],
  "subscriptionType": "DAST",
  "match": {
    "type": "WAS",
    "service": {
      "name": "string",
      "scheme": "string",
      "port": 0,
      "protocol": "TCP",
      "virtualHost": "string"
    },
    "patternUuid": "string"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
assetId integer(int32) true none none
type string true none none
firstSeen string(date-time) true none Timestamp when the entry was seen for the first time.
lastSeen string(date-time) true none Timestamp when the entry was seen last time.
firstScanId integer(int32) false read-only none
lastScanId integer(int32) false read-only none
findingIds [integer] false read-only none
source [string] true none none
subscriptionType string false none none
match BaseMatch false none The match list
tags [Tag] false read-only [The tags]

Enumerated Values

Property Value
type WAS
type GATHEREDINFORMATION
type COMPONENT
type COMPLIANCE
type PAC
subscriptionType DAST
subscriptionType SCALE
subscriptionType SCOUT
subscriptionType SNAPSHOT
subscriptionType ASSURE
subscriptionType DAST_EXPERT
subscriptionType VERIFY
subscriptionType SWAT
subscriptionType CLOUDSEC
subscriptionType NETSEC
subscriptionType CONSUMPTION

Notification

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "userId": 0,
  "subUserId": 0,
  "eventSubscriptionId": 0,
  "read": "2019-08-24T14:15:22Z",
  "content": {
    "subject": "string",
    "message": "string",
    "trigger": "SCHEDULE_CREATED",
    "entityType": "FINDING",
    "entityId": 0,
    "subEntityType": "COMMENT",
    "subEntityId": 0
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
userId integer(int64) false none none
subUserId integer(int64) false none none
eventSubscriptionId integer(int32) false none none
read string(date-time) false none none
content Notification.Content false none none

Notification.Content

{
  "subject": "string",
  "message": "string",
  "trigger": "SCHEDULE_CREATED",
  "entityType": "FINDING",
  "entityId": 0,
  "subEntityType": "COMMENT",
  "subEntityId": 0
}

Properties

Name Type Required Restrictions Description
subject string true none none
message string false none none
trigger string true none none
entityType string false none none
entityId integer(int32) false none none
subEntityType string false none none
subEntityId integer(int32) false none none

Enumerated Values

Property Value
trigger SCHEDULE_CREATED
trigger SCHEDULE_DELETED
trigger SCHEDULE_MODIFIED
trigger SCHEDULE_SCHEDULED
trigger CONFIGURATION_CREATED
trigger CONFIGURATION_DELETED
trigger CONFIGURATION_MODIFIED
trigger CONFIGURATION_STARTED
trigger CONFIGURATION_DONE
trigger SCAN_STARTED
trigger SCAN_STOPPED
trigger SCAN_DONE
trigger ASSET_NOT_RECENTLY_SEEN
trigger ASSET_SEEN
trigger ASSET_CREATED
trigger ASSET_DELETED
trigger ASSET_MODIFIED
trigger FINDING_SEEN
trigger FINDING_CREATED
trigger FINDING_MODIFIED
trigger FINDING_STATUS_TRANSITIONED
trigger FINDING_RISK_ACCEPTED_EXPIRATION
trigger WATCHED_FINDING_UPDATED
trigger USER_CREATED
trigger USER_DELETED
trigger USER_MODIFIED
trigger USER_LOGIN_ATTEMPT
trigger USER_PASSWORD_RESET
trigger ROLE_CREATED
trigger ROLE_DELETED
trigger ROLE_MODIFIED
trigger RESOURCE_GROUP_CREATED
trigger RESOURCE_GROUP_DELETED
trigger RESOURCE_GROUP_MODIFIED
trigger NEW_RELEASE_NOTES
trigger HIAB_SCANNER_MISSING
trigger HIAB_UPDATE_DONE
trigger HIAB_UPDATE_FAILED
trigger HIAB_BACKUP_DONE
trigger HIAB_BACKUP_FAILED
trigger HIAB_MAINTENANCE_PLAN_DONE
trigger HIAB_DISK_USAGE_HIGH
trigger HIAB_REBOOTED
trigger HIAB_REMOTE_SUPPORT
trigger OUTSCAN_CONSULTANCY
trigger CONSUMPTION_ABSOLUTE
trigger CONSUMPTION_RELATIVE
trigger WORKFLOW_CREATED
trigger WORKFLOW_DELETED
trigger WORKFLOW_MODIFIED
trigger WORKFLOW_STARTED
trigger WORKFLOW_DONE
trigger COMPLIANCE_CREATED
trigger COMPLIANCE_MODIFIED
trigger COMPLIANCE_RISK_EXCEPTION
trigger COMPLIANCE_RISK_EXCEPTION_EXPIRATION
trigger COMMENT_CREATED
trigger EXECUTIVE_SUMMARY_UPDATED
trigger ACTIVITY_FEED_UPDATED
entityType FINDING
entityType ASSET_GROUP
entityType ASSET
entityType SCAN_CONFIGURATION
entityType SCHEDULE
entityType SCAN
entityType USER
entityType ROLE
entityType RESOURCE_GROUP
entityType COMPLIANCE
entityType WORKFLOW
entityType CHECK
subEntityType COMMENT
subEntityType ATTACHMENT
subEntityType ACTIVITY

Organization

{
  "id": 0,
  "uuid": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
uuid string false read-only The UUID of the entry.
name string false read-only The name of the entry.

OutscanFinding

{
  "id": 0,
  "scanJobId": 0,
  "scanLogId": 0,
  "scheduleId": 0,
  "templateId": 0,
  "cvssScore": 0,
  "cvssV3Score": 0,
  "cvssV3Severity": "RECOMMENDATION",
  "cvssV3Vector": "string",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "reportDate": "2019-08-24T14:15:22Z",
  "targetId": 0,
  "target": "string",
  "hostname": "string",
  "port": 0,
  "protocol": 0,
  "name": "string",
  "source": [
    "SCOUT"
  ],
  "cve": "string",
  "vulnId": 0,
  "isNew": true,
  "previouslyDetected": true,
  "type": "string",
  "isPotentialFalsePositive": true,
  "productName": "string",
  "productUrl": "string",
  "solutionProduct": "string",
  "checkCreated": "2019-08-24T14:15:22Z",
  "hasExploits": true,
  "solution": "string",
  "businessCriticality": "LOW",
  "assetBusinessCriticality": "LOW",
  "solutionTitle": "string",
  "created": "2019-08-24T14:15:22Z",
  "cyrating": 0,
  "cyratingDelta": 0,
  "cyratingUpdated": "2019-08-24T14:15:22Z",
  "cyratingLastSeen": "2019-08-24T14:15:22Z",
  "exploitProbability": 0,
  "exploitProbabilityDelta": 0,
  "assetExposed": true,
  "owasp2017": [
    0
  ],
  "isAccepted": true,
  "patchInformation": "string",
  "cvssVector": "string",
  "virtualHost": "string",
  "platform": "string",
  "bugTraq": [
    0
  ],
  "serviceName": "string",
  "riskLevel": "Initial",
  "solutionType": "Unspecified",
  "age": 0,
  "data": "string",
  "description": "string",
  "farsight": {
    "risk": {
      "score": 0,
      "delta": 0
    },
    "updated": "2019-08-24T14:15:22Z",
    "lastThreatActivity": "2019-08-24T14:15:22Z"
  },
  "acceptExpires": "2019-08-24T14:15:22Z",
  "acceptedBy": "string",
  "acceptDate": "2019-08-24T14:15:22Z",
  "acceptComment": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
scanJobId integer(int64) false read-only none
scanLogId integer(int64) false read-only none
scheduleId integer(int64) false read-only none
templateId integer(int64) false read-only none
cvssScore number(double) false read-only none
cvssV3Score number(double) false read-only none
cvssV3Severity string false read-only none
cvssV3Vector string false read-only none
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
reportDate string(date-time) false read-only none
targetId integer(int64) false read-only none
target string false read-only none
hostname string false read-only none
port integer(int64) false read-only none
protocol integer(int64) false read-only none
name string false read-only The name of the entry.
source [string] false read-only none
cve string false read-only none
vulnId integer(int64) false read-only none
isNew boolean false read-only none
previouslyDetected boolean false read-only none
type string false read-only none
isPotentialFalsePositive boolean false read-only none
productName string false read-only none
productUrl string false read-only none
solutionProduct string false read-only none
checkCreated string(date-time) false read-only none
hasExploits boolean false read-only none
solution string false read-only none
businessCriticality string false read-only none
assetBusinessCriticality string false read-only none
solutionTitle string false read-only none
created string(date-time) false read-only The timestamp when the entry was created.
cyrating number(double) false read-only none
cyratingDelta number(double) false read-only none
cyratingUpdated string(date-time) false read-only none
cyratingLastSeen string(date-time) false read-only none
exploitProbability number(double) false read-only none
exploitProbabilityDelta number(double) false read-only none
assetExposed boolean false read-only none
owasp2017 [integer] false read-only An array of OWASP Top 10 2017 classifications of the entry.
isAccepted boolean false read-only none
patchInformation string false read-only none
cvssVector string false none none
virtualHost string false none none
platform string false none none
bugTraq [integer] false none An array of Bugtraq reference IDs.
serviceName string false none none
riskLevel string false none none
solutionType string false none none
age integer(int32) false none none
data string false none none
description string false read-only Description of the entry.
farsight Farsight false none The farsight concists in additional information on risk such as likelihood, threat activity
acceptExpires string(date-time) false read-only none
acceptedBy string false read-only The name of the user who accepted the risk.
acceptDate string(date-time) false read-only none
acceptComment string false read-only none

Enumerated Values

Property Value
cvssV3Severity RECOMMENDATION
cvssV3Severity LOW
cvssV3Severity MEDIUM
cvssV3Severity HIGH
cvssV3Severity CRITICAL
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL
assetBusinessCriticality LOW
assetBusinessCriticality MEDIUM
assetBusinessCriticality HIGH
assetBusinessCriticality CRITICAL
riskLevel Initial
riskLevel Recommendation
riskLevel Low
riskLevel Medium
riskLevel High
riskLevel Critical
solutionType Unspecified
solutionType Unknown
solutionType Reconfigure
solutionType Workaround
solutionType InProgress
solutionType Contact
solutionType Update
solutionType Patch
solutionType Unack
solutionType NoSol
solutionType Account
solutionType Disable
solutionType Filter
solutionType Malware

OutscanScanLog

{
  "id": 0,
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z",
  "target": "string",
  "targetId": 0,
  "schedule": "string",
  "scheduleId": 0,
  "scanJobId": 0,
  "status": "Invalid"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
startDate string(date-time) false read-only none
endDate string(date-time) false read-only none
target string false read-only none
targetId integer(int64) false read-only none
schedule string false read-only none
scheduleId integer(int64) false read-only none
scanJobId integer(int64) false read-only none
status string false none none

Enumerated Values

Property Value
status Invalid
status Ok
status Forced
status Timeout
status Stopped
status StoppedByUser
status Large
status KilledLarge
status Failed

OutscanScan

{
  "id": 0,
  "target": "string",
  "targetId": 0,
  "scheduleId": 0,
  "status": "string",
  "scanStarted": "2019-08-24T14:15:22Z",
  "scanJobId": 0
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
target string false read-only none
targetId integer(int64) false read-only none
scheduleId integer(int64) false read-only none
status string false read-only none
scanStarted string(date-time) false read-only none
scanJobId integer(int64) false read-only none

OutscanSchedule

{
  "id": 0,
  "nextScanDate": "2019-08-24T14:15:22Z",
  "template": 0,
  "name": "string",
  "targetList": "string",
  "recurrence": "Now"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
nextScanDate string(date-time) false none none
template integer(int64) false none none
name string true none The name of the entry.
targetList string true none none
recurrence string false none none

Enumerated Values

Property Value
recurrence Now
recurrence Once
recurrence Weekly
recurrence Monthly
recurrence Bimonthly
recurrence Quarterly
recurrence Fortnightly
recurrence Daily

OutscanTarget

{
  "id": 0,
  "ip": "string",
  "hostname": "string",
  "businessCriticality": "LOW",
  "exposed": true,
  "created": "2019-08-24T14:15:22Z",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "source": [
    "SCOUT"
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
ip string false read-only none
hostname string false read-only none
businessCriticality string false read-only none
exposed boolean false read-only none
created string(date-time) false read-only The timestamp when the entry was created.
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
source [string] false read-only none

Enumerated Values

Property Value
businessCriticality LOW
businessCriticality MEDIUM
businessCriticality HIGH
businessCriticality CRITICAL

PasswordRecoveryRequest

{
  "username": "string"
}

Properties

Name Type Required Restrictions Description
username string true none none

ProductInformation

{
  "product": "string",
  "name": "string",
  "url": "string",
  "updated": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
product string false read-only none
name string false read-only The name of the entry.
url string false read-only none
updated string(date-time) false read-only The timestamp when the entry was updated.

ReportSchedule

{
  "id": 0,
  "userId": 0,
  "subUserId": 0,
  "frequency": 0,
  "nextDate": "2019-08-24T14:15:22Z",
  "latestDate": "2019-08-24T14:15:22Z",
  "lastDate": "2019-08-24T14:15:22Z",
  "dayWeekMonth": 0,
  "name": "string",
  "reportType": 0,
  "format": 0,
  "zip": true,
  "recipient": [
    0
  ],
  "recipientEmail": "string",
  "encryptionKey": "string",
  "managedReportTitle": "string",
  "managedReportGroup": 0,
  "managedReportToken": "string",
  "scanType": 0,
  "recipientType": 0,
  "reportPassword": "string",
  "reportLevel": 0,
  "customSubject": "string",
  "customText": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
userId integer(int64) false read-only none
subUserId integer(int64) false read-only none
frequency integer(int32) false none none
nextDate string(date-time) false none none
latestDate string(date-time) false read-only none
lastDate string(date-time) false none none
dayWeekMonth integer(int32) false none none
name string true none The name of the entry.
reportType integer(int32) false none none
format integer(int32) false none none
zip boolean false none none
recipient [integer] false none none
recipientEmail string false none none
encryptionKey string true none none
managedReportTitle string false none none
managedReportGroup integer(int64) false none none
managedReportToken string false none none
scanType integer(int32) false none none
recipientType integer(int32) false none none
reportPassword string false none none
reportLevel integer(int32) false none none
customSubject string false none none
customText string false none none

ReportCacheEntry

{
  "created": "2019-08-24T14:15:22Z",
  "key": "string",
  "status": "string",
  "size": 0,
  "token": "string",
  "tokenExpires": "2019-08-24T14:15:22Z",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
created string(date-time) false read-only The timestamp when the entry was created.
key string false read-only none
status string false read-only none
size integer(int64) false read-only none
token string false read-only none
tokenExpires string(date-time) false read-only none
name string false read-only The name of the entry.

Report

{
  "name": "string",
  "executiveSummary": true,
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "product": "Normal",
  "viewTemplateId": 0,
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "assetIdentifierIds": [
    0
  ],
  "serviceIds": [
    0
  ],
  "tagIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z",
  "filter": "string",
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  }
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
executiveSummary boolean false none none
format string true none none
password string false none none
zip boolean false none none
type string true none none
level string false none none
product string false none none
viewTemplateId integer(int32) false none none
assetIds [integer] false none none
assetGroupIds [integer] false none none
assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
serviceIds [integer] false none none
tagIds [integer] false none none
startDate string(date-time) false none none
endDate string(date-time) false none none
filter string false none none
deliveryMethod DeliveryMethod false none none

Enumerated Values

Property Value
format PDF
format EXCEL
format XML
format SWATDEMO
type Technical
type Trend
type GroupVulnerability
type Delta
type Pci
type WasDiscovery
type Discovery
type SolutionTaskReport
type SolutionTargetReport
type GroupTrending
type GroupDelta
type Compliance
type Consumption
level Detailed
level Management
level Summary
product Normal
product Pci
product Was
product SWAT
product Compliance
product Appsec Scale
product APPSEC
product CLOUDSEC

Resource

{
  "type": "SCANCONFIGURATION",
  "tagIds": [
    0
  ]
}

The resource group resources

Properties

Name Type Required Restrictions Description
type string false none The resource type
tagIds [integer] false none The resource tag ids

Enumerated Values

Property Value
type SCANCONFIGURATION
type ACCOUNT
type SCHEDULEDREPORT
type MANAGEDREPORT
type DASHBOARD
type INTEGRATION
type ASSETGROUP
type ASSET
type APPSTAK
type VIEWTEMPLATE
type EVENTSUBSCRIPTION
type SCANPOLICY
type FINDINGTEMPLATE

ResourceGroup

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "resources": [
    {
      "type": "SCANCONFIGURATION",
      "tagIds": [
        0
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
system boolean false read-only Set to true when resource group is system resource group
resources [Resource] false none The resource group resources

PatternMatch

{
  "request": {
    "method": "string",
    "url": "string"
  },
  "match": {
    "name": "string",
    "version": "string",
    "context": "string",
    "patternUuid": "string"
  }
}

Properties

Name Type Required Restrictions Description
request PatternMatch.Request false none none
match PatternMatch.Match true none none

PatternMatch.Match

{
  "name": "string",
  "version": "string",
  "context": "string",
  "patternUuid": "string"
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
version string false none none
context string false none none
patternUuid string false none none

PatternMatch.Request

{
  "method": "string",
  "url": "string"
}

Properties

Name Type Required Restrictions Description
method string false none none
url string false none none

ScanConfigurationGroup

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "count": 0
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
parentId integer(int32) false none The ID of the parent entry.
count integer(int64) false read-only The total number of entries associated with this entry and its child entries.

AgentScanConfigurationTemplate

{
  "template": "SCOUT",
  "assetTagIds": [
    0
  ],
  "scanRecurrence": 24
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» assetTagIds [integer] false none none
» scanRecurrence integer(int32) false none none

BaseCloudConfigurationTemplate

{
  "cloudDiscoveryType": "AWS"
}

Properties

Name Type Required Restrictions Description
cloudDiscoveryType string false none none

Enumerated Values

Property Value
cloudDiscoveryType AWS
cloudDiscoveryType AZURE

BaseScanConfigurationTemplate

{
  "template": "SCOUT"
}

The scan configuration

Properties

Name Type Required Restrictions Description
template string true none none

Enumerated Values

Property Value
template SCOUT
template SCALE
template SWAT
template CLOUDSEC
template NETWORK_SCAN
template DOCKER_SCAN
template DOCKER_DISCOVERY
template NETWORK_DISCOVERY
template CLOUD_DISCOVERY
template AGENT_SCAN
template WORKFLOW

CloudDiscoveryAwsConfigurationTemplate

{
  "cloudDiscoveryType": "AWS",
  "regions": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseCloudConfigurationTemplate false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» regions string false none none

CloudDiscoveryAzureConfigurationTemplate

{
  "cloudDiscoveryType": "AWS",
  "subscriptions": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseCloudConfigurationTemplate false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» subscriptions string false none none

CloudDiscoveryConfigurationTemplate

{
  "template": "SCOUT",
  "timeout": 600,
  "accountId": 0,
  "updateAssets": true,
  "importExternalTags": true,
  "externalTagKeys": [
    "string"
  ],
  "addTagIds": [
    0
  ],
  "replaceTagIds": [
    0
  ],
  "cloudConfiguration": {
    "cloudDiscoveryType": "AWS"
  }
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» timeout integer(int32) false none none
» accountId integer(int32) false none none
» updateAssets boolean false none none
» importExternalTags boolean false none none
» externalTagKeys [string] false none none
» addTagIds [integer] false none none
» replaceTagIds [integer] false none none
» cloudConfiguration BaseCloudConfigurationTemplate false none none

CloudsecScanConfigurationTemplate

{
  "template": "SCOUT",
  "accountId": 0,
  "policyId": 0,
  "regions": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» accountId integer(int32) false none none
» policyId integer(int32) false none none
» regions string false none none

DockerDiscoveryScanConfigurationTemplate

{
  "template": "SCOUT",
  "accountId": 0
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» accountId integer(int32) false none none

DockerScanConfigurationTemplate

{
  "template": "SCOUT"
}

Properties

None

NetworkDiscoveryConfigurationTemplate

{
  "template": "SCOUT",
  "timeout": 600,
  "targetList": "string",
  "ignoreTargetList": "string",
  "protocols": [
    "TCP"
  ],
  "tcpPorts": "string",
  "reportFilters": "string",
  "updateAssets": true,
  "addTagIds": [
    0
  ],
  "replaceTagIds": [
    0
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» timeout integer(int32) false none none
» targetList string false none none
» ignoreTargetList string false none none
» protocols [string] false none none
» tcpPorts string false none none
» reportFilters string false none none
» updateAssets boolean false none none
» addTagIds [integer] false none none
» replaceTagIds [integer] false none none

NetworkScanConfigurationTemplate

{
  "template": "SCOUT",
  "scanPolicyId": 0,
  "overrideScanPolicyId": 0,
  "assetTagIds": [
    0
  ],
  "timeout": 7200,
  "scanless": true
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» scanPolicyId integer(int32) false none none
» overrideScanPolicyId integer(int32) false none none
» assetTagIds [integer] false none none
» timeout integer(int32) false none none
» scanless boolean false none none

ScaleScanConfigurationTemplate

{
  "template": "SCOUT",
  "nseconds": 600,
  "fuzzing": true,
  "sequential": true,
  "seeds": [
    "string"
  ],
  "clientCertificateAuth": {
    "client-certificate": "string",
    "private-key": "string",
    "passphrase": "string"
  },
  "abortPattern": "string",
  "mustMatch": [
    {
      "method": "string",
      "url": "string",
      "body": "string",
      "body-type": "string"
    }
  ],
  "cannotMatch": [
    {
      "method": "string",
      "url": "string",
      "body": "string",
      "body-type": "string"
    }
  ],
  "allowedDomains": [
    {
      "domain": "string",
      "allow-subdomains": true
    }
  ],
  "addrBlacklist": [
    "string"
  ],
  "setupProc": "string",
  "setupProcVariables": {
    "property1": "string",
    "property2": "string"
  },
  "basicAuth": [
    {
      "user": "string",
      "password": "string",
      "url-prefix": "string"
    }
  ],
  "hostMap": [
    {
      "from": "string",
      "to": [
        "string"
      ]
    }
  ],
  "userAgent": "string",
  "maxIvs": 0,
  "sideScript": "string",
  "infrastructureScan": true
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» nseconds integer(int32) false none none
» fuzzing boolean false none none
» sequential boolean false none none
» seeds [string] false none none
» clientCertificateAuth ScaleScanConfigurationTemplate.ClientCertificate false none none
» abortPattern string false none none
» mustMatch [ScaleScanConfigurationTemplate.RequestFilter] false none none
» cannotMatch [ScaleScanConfigurationTemplate.RequestFilter] false none none
» allowedDomains [ScaleScanConfigurationTemplate.AllowedDomain] false none none
» addrBlacklist [string] false none none
» setupProc string false none none
» setupProcVariables object false none none
»» additionalProperties string false none none
» basicAuth [ScaleScanConfigurationTemplate.BasicAuthCredentials] false none none
» hostMap [ScaleScanConfigurationTemplate.HostMap] false none none
» userAgent string false none none
» maxIvs integer(int32) false none none
» sideScript string false none none
» infrastructureScan boolean false none none

ScaleScanConfigurationTemplate.AllowedDomain

{
  "domain": "string",
  "allow-subdomains": true
}

Properties

Name Type Required Restrictions Description
domain string true none none
allow-subdomains boolean false none none

ScaleScanConfigurationTemplate.BasicAuthCredentials

{
  "user": "string",
  "password": "string",
  "url-prefix": "string"
}

Properties

Name Type Required Restrictions Description
user string true none none
password string true none none
url-prefix string false none none

ScaleScanConfigurationTemplate.ClientCertificate

{
  "client-certificate": "string",
  "private-key": "string",
  "passphrase": "string"
}

Properties

Name Type Required Restrictions Description
client-certificate string false none none
private-key string false none none
passphrase string false none none

ScaleScanConfigurationTemplate.HostMap

{
  "from": "string",
  "to": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
from string true none none
to [string] true none none

ScaleScanConfigurationTemplate.RequestFilter

{
  "method": "string",
  "url": "string",
  "body": "string",
  "body-type": "string"
}

Properties

Name Type Required Restrictions Description
method string false none none
url string false none none
body string false none none
body-type string false none none

ScanConfiguration

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "template": "SCOUT",
  "groupId": 0,
  "scheduleIds": [
    0
  ],
  "assetIdentifierIds": [
    0
  ],
  "assetIds": [
    0
  ],
  "workflowId": 0,
  "enabled": true,
  "scannerId": 0,
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "lastScan": "2019-08-24T14:15:22Z",
  "configuration": {
    "template": "SCOUT"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
template string false read-only The scan template
groupId integer(int32) false none The scan group id
scheduleIds [integer] false read-only The schedule ids associated with this scan configuration
assetIdentifierIds [integer] false none An array of asset identifier IDs associated with this entry
assetIds [integer] false none The asset IDs associated with this scan configuration
workflowId integer(int32) false none The workflow ID associated with this scan configuration
enabled boolean false none Determines if the entry is enabled or not.
scannerId integer(int32) false none The scanner id
nextOccurrence string(date-time) false read-only The scan next occurrence date
lastScan string(date-time) false read-only Last time a scan was performed using this configuration
configuration BaseScanConfigurationTemplate true none The scan configuration
tags [Tag] false read-only The tags

Enumerated Values

Property Value
template SCOUT
template SCALE
template SWAT
template CLOUDSEC
template NETWORK_SCAN
template DOCKER_SCAN
template DOCKER_DISCOVERY
template NETWORK_DISCOVERY
template CLOUD_DISCOVERY
template AGENT_SCAN
template WORKFLOW

SwatScanConfigurationTemplate

{
  "template": "SCOUT",
  "seedUrls": [
    "string"
  ],
  "stopAfterSeconds": 0,
  "crawlScope": {
    "must-match": [
      {
        "method": "string",
        "url": "string",
        "body": "string",
        "body-type": "string"
      }
    ],
    "cannot-match": [
      {
        "method": "string",
        "url": "string",
        "body": "string",
        "body-type": "string"
      }
    ],
    "allowed-domains": [
      {
        "domain": "string",
        "allow-subdomains": true
      }
    ],
    "n-matches": [
      {
        "pattern": {
          "method": "string",
          "url": "string",
          "body": "string",
          "body-type": "string"
        },
        "limit": 0
      }
    ]
  },
  "httpScope": {
    "must-match": [
      {
        "method": "string",
        "url": "string",
        "body": "string",
        "body-type": "string"
      }
    ],
    "cannot-match": [
      {
        "method": "string",
        "url": "string",
        "body": "string",
        "body-type": "string"
      }
    ],
    "allowed-domains": [
      {
        "domain": "string",
        "allow-subdomains": true
      }
    ],
    "n-matches": [
      {
        "pattern": {
          "method": "string",
          "url": "string",
          "body": "string",
          "body-type": "string"
        },
        "limit": 0
      }
    ]
  },
  "nFetchers": 0,
  "cookiesTxt": "string",
  "httpBodyLimit": 0,
  "httpBlockedMimeBodies": [
    "string"
  ],
  "depthLimit": 0,
  "abortPattern": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseScanConfigurationTemplate false none The scan configuration

and

Name Type Required Restrictions Description
anonymous object false none none
» seedUrls [string] false none none
» stopAfterSeconds integer(int32) false none none
» crawlScope SwatScanConfigurationTemplate.Scope false none none
» httpScope SwatScanConfigurationTemplate.Scope false none none
» nFetchers integer(int32) false none none
» cookiesTxt string false none none
» httpBodyLimit integer(int32) false none none
» httpBlockedMimeBodies [string] false none none
» depthLimit integer(int32) false none none
» abortPattern string false none none

SwatScanConfigurationTemplate.AllowedDomain

{
  "domain": "string",
  "allow-subdomains": true
}

Properties

Name Type Required Restrictions Description
domain string false none none
allow-subdomains boolean false none none

SwatScanConfigurationTemplate.CountedRequestPattern

{
  "pattern": {
    "method": "string",
    "url": "string",
    "body": "string",
    "body-type": "string"
  },
  "limit": 0
}

Properties

Name Type Required Restrictions Description
pattern SwatScanConfigurationTemplate.RequestPattern false none none
limit integer(int32) false none none

SwatScanConfigurationTemplate.RequestPattern

{
  "method": "string",
  "url": "string",
  "body": "string",
  "body-type": "string"
}

Properties

Name Type Required Restrictions Description
method string false none none
url string false none none
body string false none none
body-type string false none none

SwatScanConfigurationTemplate.Scope

{
  "must-match": [
    {
      "method": "string",
      "url": "string",
      "body": "string",
      "body-type": "string"
    }
  ],
  "cannot-match": [
    {
      "method": "string",
      "url": "string",
      "body": "string",
      "body-type": "string"
    }
  ],
  "allowed-domains": [
    {
      "domain": "string",
      "allow-subdomains": true
    }
  ],
  "n-matches": [
    {
      "pattern": {
        "method": "string",
        "url": "string",
        "body": "string",
        "body-type": "string"
      },
      "limit": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
must-match [SwatScanConfigurationTemplate.RequestPattern] false none none
cannot-match [SwatScanConfigurationTemplate.RequestPattern] false none none
allowed-domains [SwatScanConfigurationTemplate.AllowedDomain] false none none
n-matches [SwatScanConfigurationTemplate.CountedRequestPattern] false none none

TestSetupScript

{
  "script": "string",
  "blacklist": [
    "string"
  ],
  "hostmap": [
    {
      "from": "string",
      "to": [
        "string"
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
script string false none none
blacklist [string] false none none
hostmap [ScaleScanConfigurationTemplate.HostMap] false none none

ScanPolicySettings

{
  "safeOnly": true,
  "tryDefaultCredentials": true,
  "ignoreFallbackKernels": true,
  "useDiscoveredCredentials": true,
  "virtualHostsIp": true,
  "virtualHostsHostName": true,
  "virtualHostsReverseDns": true,
  "speed": "string",
  "portsTcp": "string",
  "portsUdp": "string",
  "netstatCheck": "string",
  "regularPortScanFallback": true,
  "authenticatedScanSshPort": 65535,
  "trustedCasPem": "string",
  "useCustomCredentials": true,
  "enableRemoteRegistry": true
}

Properties

Name Type Required Restrictions Description
safeOnly boolean false none none
tryDefaultCredentials boolean false none none
ignoreFallbackKernels boolean false none none
useDiscoveredCredentials boolean false none none
virtualHostsIp boolean false none none
virtualHostsHostName boolean false none none
virtualHostsReverseDns boolean false none none
speed string false none none
portsTcp string false none none
portsUdp string false none none
netstatCheck string false none none
regularPortScanFallback boolean false none none
authenticatedScanSshPort integer(int32) false none none
trustedCasPem string false none none
useCustomCredentials boolean false none none
enableRemoteRegistry boolean false none none

ScanPolicy

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "accountIds": [
    0
  ],
  "settings": {
    "safeOnly": true,
    "tryDefaultCredentials": true,
    "ignoreFallbackKernels": true,
    "useDiscoveredCredentials": true,
    "virtualHostsIp": true,
    "virtualHostsHostName": true,
    "virtualHostsReverseDns": true,
    "speed": "string",
    "portsTcp": "string",
    "portsUdp": "string",
    "netstatCheck": "string",
    "regularPortScanFallback": true,
    "authenticatedScanSshPort": 65535,
    "trustedCasPem": "string",
    "useCustomCredentials": true,
    "enableRemoteRegistry": true
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
system boolean false read-only none
accountIds [integer] false none none
settings ScanPolicySettings false none none
tags [Tag] false read-only [The tags]

Scanner

{
  "id": 0,
  "userId": 0,
  "name": "string",
  "ipaddress": "string",
  "mode": 0,
  "approved": true,
  "inactive": true,
  "useProxy": true,
  "polling": true,
  "serverStatus": "string",
  "lastConnection": "2019-08-24T14:15:22Z",
  "lastUpdate": "2019-08-24T14:15:22Z",
  "version": "string",
  "uiVersion": "string",
  "scannerVersion": "string",
  "appsecScaleScanner": true,
  "groupId": 0,
  "groupName": "string",
  "isOutpost": true,
  "isAwsScanner": true,
  "scanningDisabled": true,
  "isGroup": true,
  "performUpdate": true,
  "hwAddr": "string",
  "hmacKey": "string",
  "rulesVersion": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
userId integer(int64) false read-only none
name string true none The name of the entry.
ipaddress string true none none
mode integer(int32) false none none
approved boolean false none none
inactive boolean false none none
useProxy boolean false none none
polling boolean false read-only none
serverStatus string false read-only none
lastConnection string(date-time) false read-only none
lastUpdate string(date-time) false read-only none
version string false read-only none
uiVersion string false read-only none
scannerVersion string false read-only none
appsecScaleScanner boolean false read-only none
groupId integer(int64) false none none
groupName string false none none
isOutpost boolean false read-only none
isAwsScanner boolean false read-only none
scanningDisabled boolean false read-only none
isGroup boolean false none none
performUpdate boolean false read-only none
hwAddr string false read-only none
hmacKey string false read-only none
rulesVersion string(date-time) false read-only none

ScanLog

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "jobId": "string",
  "status": "QUEUED",
  "statusDetails": "string",
  "source": "SCOUT",
  "scanConfigurationId": 0,
  "scanConfigurationName": "string",
  "workflowId": 0,
  "workflowName": "string",
  "started": "2019-08-24T14:15:22Z",
  "ended": "2019-08-24T14:15:22Z",
  "expectedStart": "2019-08-24T14:15:22Z",
  "expectedEnd": "2019-08-24T14:15:22Z",
  "blueprintAvailable": true,
  "assetIdentifierId": 0,
  "assetIdentifierType": "IP",
  "assetIdentifierName": "string",
  "assetId": 0,
  "assetName": "string",
  "latestRuleDate": "2019-08-24T14:15:22Z",
  "scanless": true,
  "parentId": 0,
  "scheduleId": 0,
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
jobId string false none The id of the scan job
status string true none The scan status
statusDetails string false none The scan status details
source string true none The scan source
scanConfigurationId integer(int32) false none The id of the scan configuration
scanConfigurationName string false read-only The name of the scan configuration
workflowId integer(int32) false none The id of the workflow
workflowName string false read-only The name of the workflow
started string(date-time) false none The scan started date
ended string(date-time) false none The scan ended date
expectedStart string(date-time) false read-only The scan expected start date
expectedEnd string(date-time) false read-only The scan expected end date
blueprintAvailable boolean false read-only Set to true when scan blueprint is available
assetIdentifierId integer(int32) false none The ID of the asset identifier associated with this entry
assetIdentifierType string false read-only The type of asset on which the scan is performed
assetIdentifierName string false read-only The name of asset on which the scan is performed
assetId integer(int32) false none The id of asset on which the scan is performed
assetName string false read-only The name of asset on which the scan is performed
latestRuleDate string(date-time) false none The latest rule date taken into account to perform the scan
scanless boolean false none Set to true when scan is scanless (eg only detection performed)
parentId integer(int32) false none The ID of the parent entry.
scheduleId integer(int32) false none The schedule id when scan triggered by a schedule.
tags [Tag] false read-only The tags

Enumerated Values

Property Value
status QUEUED
status PENDING
status STARTING
status RUNNING
status STOPPING
status STOPPED
status REPORTING
status FINISHED
status ISSUES
status FAILED
source SCOUT
source SCALE
source SWAT
source CLOUDSEC
source NETWORK_SCAN
source DOCKER_SCAN
source DOCKER_DISCOVERY
source NETWORK_DISCOVERY
source CLOUD_DISCOVERY
source AGENT_SCAN
source WORKFLOW
assetIdentifierType IP
assetIdentifierType HOSTNAME
assetIdentifierType AWS_ACCOUNT_ID
assetIdentifierType AWS_INSTANCE_ID
assetIdentifierType AWS_REGION
assetIdentifierType MAC
assetIdentifierType NETBIOS
assetIdentifierType GCP_PROJECT_ID
assetIdentifierType MAZ_TENANT_ID
assetIdentifierType MAZ_SUBSCRIPTION
assetIdentifierType MAZ_RESOURCE_GROUP
assetIdentifierType MAZ_RESOURCE
assetIdentifierType DOCKER_REGISTRY
assetIdentifierType DOCKER_IMAGE
assetIdentifierType SEED_PATH
assetIdentifierType AGENT
assetIdentifierType SERIAL_MACHINE_ID
assetIdentifierType SERIAL_PRODUCT_ID
assetIdentifierType SERIAL_DISK_ID

ScanLogMetadata

{
  "schema": "string",
  "attacker": "string"
}

Properties

Name Type Required Restrictions Description
schema string false read-only none
attacker string false read-only none

ScheduledReport

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "lastSent": "2019-08-24T14:15:22Z",
  "scheduleIds": [
    0
  ],
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "workflowId": 0,
  "deliveryMethod": {
    "email": {
      "userIds": [
        0
      ],
      "recipients": {
        "addresses": [
          "string"
        ],
        "pgpKey": "string"
      }
    },
    "managedReport": {
      "name": "string",
      "tags": "string"
    }
  },
  "scope": {
    "assetIds": [
      0
    ],
    "assetGroupIds": [
      0
    ],
    "tagIds": [
      0
    ]
  },
  "report": {
    "formats": [
      "PDF"
    ],
    "type": "Technical",
    "viewTemplateId": 0,
    "viewTemplateName": "string",
    "level": "Detailed",
    "product": "Normal",
    "password": "string",
    "executiveSummary": true,
    "zip": true,
    "timeFrame": "LAST_DAY",
    "startDate": "2019-08-24T14:15:22Z",
    "endDate": "2019-08-24T14:15:22Z"
  },
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
enabled boolean false none Determines if the entry is enabled or not.
lastSent string(date-time) false read-only none
scheduleIds [integer] false read-only none
nextOccurrence string(date-time) false read-only none
workflowId integer(int32) false none The workflow ID associated with this report
deliveryMethod DeliveryMethod true none none
scope ScheduledReport.Scope true none none
report ScheduledReport.Report true none none
tags [Tag] false read-only [The tags]

ScheduledReport.Report

{
  "formats": [
    "PDF"
  ],
  "type": "Technical",
  "viewTemplateId": 0,
  "viewTemplateName": "string",
  "level": "Detailed",
  "product": "Normal",
  "password": "string",
  "executiveSummary": true,
  "zip": true,
  "timeFrame": "LAST_DAY",
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
formats [string] true none none
type string true none none
viewTemplateId integer(int32) false none none
viewTemplateName string false none none
level string false none none
product string false none none
password string false none none
executiveSummary boolean false none none
zip boolean false none none
timeFrame string false none none
startDate string(date-time) false none none
endDate string(date-time) false none none

Enumerated Values

Property Value
type Technical
type Trend
type GroupVulnerability
type Delta
type Pci
type WasDiscovery
type Discovery
type SolutionTaskReport
type SolutionTargetReport
type GroupTrending
type GroupDelta
type Compliance
type Consumption
level Detailed
level Management
level Summary
product Normal
product Pci
product Was
product SWAT
product Compliance
product Appsec Scale
product APPSEC
product CLOUDSEC
timeFrame LAST_DAY
timeFrame LAST_WEEK
timeFrame LAST_MONTH
timeFrame LAST_QUARTER
timeFrame LAST_YEAR
timeFrame CUSTOM

ScheduledReport.Scope

{
  "assetIds": [
    0
  ],
  "assetGroupIds": [
    0
  ],
  "tagIds": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
assetIds [integer] false none none
assetGroupIds [integer] false none none
tagIds [integer] false none none

Schedule

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "frequency": "NONE",
  "interval": 0,
  "weekdays": [
    "MONDAY"
  ],
  "days": [
    0
  ],
  "nthDays": [
    0
  ],
  "weeks": [
    0
  ],
  "months": [
    "JANUARY"
  ],
  "remainingOccurrences": 0,
  "scanConfigurationIds": [
    0
  ],
  "workflowIds": [
    0
  ],
  "scheduledReportIds": [
    0
  ],
  "timezone": "string",
  "scanWindowDuration": 12,
  "startsFrom": "2019-08-24T14:15:22Z",
  "until": "2019-08-24T14:15:22Z",
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "blockedTimeSlots": {
    "monday": [
      0
    ],
    "tuesday": [
      0
    ],
    "wednesday": [
      0
    ],
    "thursday": [
      0
    ],
    "friday": [
      0
    ],
    "saturday": [
      0
    ],
    "sunday": [
      0
    ]
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
enabled boolean false none Determines if the entry is enabled or not.
frequency string true none The schedule frequency
interval integer(int32) true none The schedule interval
weekdays [string] false none The schedule weekdays set what weekdays have been selected for recurrence
days [integer] false none The schedule days set what days have been selected for recurrence
nthDays [integer] false none The schedule nthDays set what ordinal days have been selected for recurrence
weeks [integer] false none The schedule weeks set what weeks have been selected for recurrence
months [string] false none The schedule months set what months have been selected for recurrence
remainingOccurrences integer(int32) false none The schedule remaining occurrences
scanConfigurationIds [integer] false read-only The scan configuration IDs associated with this schedule
workflowIds [integer] false read-only The workflow IDs associated with this schedule
scheduledReportIds [integer] false read-only The report IDs associated with this schedule
timezone string false none The schedule time zone
scanWindowDuration integer(int32) false none The schedule scan window duration.
startsFrom string(date-time) true none The schedule starts from date
until string(date-time) false none The schedule until date
nextOccurrence string(date-time) false read-only The schedule next occurrence date
blockedTimeSlots Schedule.BlockedTimeSlots false none The schedule blocked time slots

Enumerated Values

Property Value
frequency NONE
frequency ONCE
frequency HOURLY
frequency DAILY
frequency WEEKLY
frequency MONTHLY
frequency YEARLY

Schedule.BlockedTimeSlots

{
  "monday": [
    0
  ],
  "tuesday": [
    0
  ],
  "wednesday": [
    0
  ],
  "thursday": [
    0
  ],
  "friday": [
    0
  ],
  "saturday": [
    0
  ],
  "sunday": [
    0
  ]
}

The schedule blocked time slots

Properties

Name Type Required Restrictions Description
monday [integer] false none none
tuesday [integer] false none none
wednesday [integer] false none none
thursday [integer] false none none
friday [integer] false none none
saturday [integer] false none none
sunday [integer] false none none

ScopingInformation

{
  "targetSolution": "Appsec SWAT",
  "targetStartDate": "2019-08-24T14:15:22Z",
  "assetIdentifierIds": [
    0
  ],
  "adminUrls": [
    "string"
  ],
  "outOfScopeUrls": [
    "string"
  ],
  "knownSensitiveFunctionality": "string",
  "rolesAndCredentials": "string",
  "componentsAndTechnologies": "string",
  "focusAreas": "string"
}

Properties

Name Type Required Restrictions Description
targetSolution string true none none
targetStartDate string(date-time) true none none
assetIdentifierIds [integer] true none An array of asset identifier IDs associated with this entry
adminUrls [string] false none none
outOfScopeUrls [string] false none none
knownSensitiveFunctionality string false none none
rolesAndCredentials string false none none
componentsAndTechnologies string false none none
focusAreas string false none none

Enumerated Values

Property Value
targetSolution Appsec SWAT
targetSolution Appsec Snapshot
targetSolution Appsec Assure

ChangePasswordRequest

{
  "password": "string",
  "oldPassword": "string"
}

Properties

Name Type Required Restrictions Description
password string true none none
oldPassword string true none none

SubUser

{
  "timezone": "string",
  "portalPreferences": "string",
  "customerId": 0,
  "id": 0,
  "subUser": true,
  "username": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "emailEncryptionKey": "string",
  "countryCode": "string",
  "stateCode": "string",
  "parentId": 0,
  "mobilePhone": "string",
  "lastLogonIp": "string",
  "lastLogonDate": "2019-08-24T14:15:22Z",
  "logons": 0,
  "language": "string",
  "subParentId": 0,
  "superUser": true,
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "userRoleIds": [
    0
  ],
  "resourceGroupIds": [
    0
  ],
  "userRolePermissions": [
    "ASSETS_VIEW"
  ],
  "allowedCustomerTagIds": [
    0
  ],
  "roles": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "allowedCustomerTags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
timezone string false none The user time zone
portalPreferences string false none The user portal preferences
customerId integer(int32) false read-only The ID of the customer owning the entry.
id integer(int64) false read-only The ID of the entry.
subUser boolean false read-only none
username string true none none
firstName string true none none
lastName string true none none
email string true none none
emailEncryptionKey string false none none
countryCode string false none none
stateCode string false none none
parentId integer(int64) false read-only The ID of the parent entry.
mobilePhone string false none none
lastLogonIp string false read-only none
lastLogonDate string(date-time) false read-only none
logons integer(int64) false read-only none
language string false none none
subParentId integer(int64) false none none
superUser boolean false none none
snapshotSubscriptions integer(int64) false read-only none
snapshotSubscriptionsRemaining integer(int64) false read-only none
swatSubscriptions integer(int64) false read-only none
swatSubscriptionsRemaining integer(int64) false read-only none
userRoleIds [integer] false none none
resourceGroupIds [integer] false none none
userRolePermissions [string] false read-only none
allowedCustomerTagIds [integer] false none none
roles string false read-only The user's roles
tags [Tag] false read-only [The tags]
allowedCustomerTags [Tag] false read-only The allowed customer tags

SubscriptionAudit

{
  "id": 0,
  "action": "string",
  "time": "2019-08-24T14:15:22Z",
  "ip": "string",
  "comment": "string",
  "username": "string",
  "customerName": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
action string false read-only none
time string(date-time) false read-only none
ip string false read-only none
comment string false read-only none
username string false read-only none
customerName string false read-only none

SubscriptionTemplate

{
  "uuid": "string",
  "name": "string",
  "organization": {
    "uuid": "string"
  },
  "variables": "string",
  "template": "string",
  "created": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updated": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}

Properties

Name Type Required Restrictions Description
uuid string false none The UUID of the entry.
name string true none The name of the entry.
organization SubscriptionTemplate.Organization true none none
variables string false none none
template string true none none
created string(date-time) false none The timestamp when the entry was created.
createdBy string false none The name of the user who created the entry.
updated string(date-time) false none The timestamp when the entry was updated.
updatedBy string false none The name of the user who updated the entry.

SubscriptionTemplate.Organization

{
  "uuid": "string"
}

Properties

Name Type Required Restrictions Description
uuid string true none The UUID of the entry.

SubscriptionTemplateVariable

{
  "key": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
key string false none The subscription template variable name
description string false none Description of the entry.

SubscriptionTemplatePreviewRequest

{
  "variables": "string",
  "template": "string"
}

Properties

Name Type Required Restrictions Description
variables string false none none
template string true none none

SubscriptionReport

{
  "customerIds": [
    0
  ],
  "startDate": "2019-08-24T14:15:22Z",
  "endDate": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
customerIds [integer] true none none
startDate string(date-time) true none none
endDate string(date-time) true none none

Summary

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "content": "string",
  "assetGroupId": 0,
  "swatScheduleId": 0,
  "reviewed": "2019-08-24T14:15:22Z",
  "reviewedBy": "string",
  "reviewedById": 0,
  "qualityAssured": "2019-08-24T14:15:22Z",
  "qualityAssuredBy": "string",
  "qualityAssuredById": 0,
  "published": "2019-08-24T14:15:22Z",
  "publishedBy": "string",
  "publishedById": 0,
  "status": "PENDING_REVIEW"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
content string false none none
assetGroupId integer(int32) true none none
swatScheduleId integer(int64) true none none
reviewed string(date-time) false none none
reviewedBy string false none none
reviewedById integer(int32) false none none
qualityAssured string(date-time) false none none
qualityAssuredBy string false none none
qualityAssuredById integer(int32) false none none
published string(date-time) false none none
publishedBy string false none none
publishedById integer(int32) false none none
status string false none none

Enumerated Values

Property Value
status PENDING_REVIEW
status PENDING_QA
status PENDING_PUBLICATION
status PUBLISHED

SummaryTransitionRequest

{
  "transitionTo": "PENDING_REVIEW",
  "transitionBy": "string",
  "transitionById": 0
}

Properties

Name Type Required Restrictions Description
transitionTo string true none none
transitionBy string true none none
transitionById integer(int32) true none none

Enumerated Values

Property Value
transitionTo PENDING_REVIEW
transitionTo PENDING_QA
transitionTo PENDING_PUBLICATION
transitionTo PUBLISHED

SwatSchedule

{
  "id": 0,
  "parent": 0,
  "customerId": 0,
  "name": "string",
  "executiveSummary": "string",
  "instance": true
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
parent integer(int64) false read-only none
customerId integer(int64) false read-only The ID of the customer owning the entry.
name string true none The name of the entry.
executiveSummary string false read-only none
instance boolean false read-only none

TagStatistic

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "key": "string",
  "value": "string",
  "statistics": {
    "accounts": 0,
    "assetGroups": 0,
    "assets": 0,
    "assetIdentifiers": 0,
    "eventSubscriptions": 0,
    "managedReports": 0,
    "scheduledReports": 0,
    "appstaks": 0,
    "complianceFindings": 0,
    "findings": 0,
    "scanConfigurations": 0,
    "workflows": 0,
    "dashboards": 0,
    "integrations": 0,
    "scanPolicies": 0,
    "viewTemplates": 0,
    "users": 0,
    "scanConfigurationSettings": 0,
    "scheduledReportSettings": 0,
    "resourceGroupSettings": 0
  }
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
key string false read-only none
value string false read-only none
statistics TagStatistic.Statistics false none none

TagStatistic.Statistics

{
  "accounts": 0,
  "assetGroups": 0,
  "assets": 0,
  "assetIdentifiers": 0,
  "eventSubscriptions": 0,
  "managedReports": 0,
  "scheduledReports": 0,
  "appstaks": 0,
  "complianceFindings": 0,
  "findings": 0,
  "scanConfigurations": 0,
  "workflows": 0,
  "dashboards": 0,
  "integrations": 0,
  "scanPolicies": 0,
  "viewTemplates": 0,
  "users": 0,
  "scanConfigurationSettings": 0,
  "scheduledReportSettings": 0,
  "resourceGroupSettings": 0
}

Properties

Name Type Required Restrictions Description
accounts integer(int32) false none none
assetGroups integer(int32) false none none
assets integer(int32) false none none
assetIdentifiers integer(int32) false none none
eventSubscriptions integer(int32) false none none
managedReports integer(int32) false none none
scheduledReports integer(int32) false none none
appstaks integer(int32) false none none
complianceFindings integer(int32) false none none
findings integer(int32) false none none
scanConfigurations integer(int32) false none none
workflows integer(int32) false none none
dashboards integer(int32) false none none
integrations integer(int32) false none none
scanPolicies integer(int32) false none none
viewTemplates integer(int32) false none none
users integer(int32) false none none
scanConfigurationSettings integer(int32) false none none
scheduledReportSettings integer(int32) false none none
resourceGroupSettings integer(int32) false none none

TagsTransformation

{
  "objects": {
    "accounts": true,
    "assetGroups": true,
    "assets": true,
    "assetIdentifiers": true,
    "eventSubscriptions": true,
    "managedReports": true,
    "scheduledReports": true,
    "appstaks": true,
    "complianceFindings": true,
    "findings": true,
    "scanConfigurations": true,
    "dashboards": true,
    "integrations": true,
    "scanPolicies": true,
    "viewTemplates": true,
    "users": true,
    "scanConfigurationSettings": true,
    "scheduledReportSettings": true,
    "resourceGroupSettings": true,
    "workflows": true
  },
  "from": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  },
  "to": {
    "key": "string",
    "allKeys": true,
    "value": "string",
    "allValues": true
  }
}

Properties

Name Type Required Restrictions Description
objects TagsTransformation.Objects false none none
from TagsTransformation.ToFrom false none none
to TagsTransformation.ToFrom false none none

TagsTransformation.Objects

{
  "accounts": true,
  "assetGroups": true,
  "assets": true,
  "assetIdentifiers": true,
  "eventSubscriptions": true,
  "managedReports": true,
  "scheduledReports": true,
  "appstaks": true,
  "complianceFindings": true,
  "findings": true,
  "scanConfigurations": true,
  "dashboards": true,
  "integrations": true,
  "scanPolicies": true,
  "viewTemplates": true,
  "users": true,
  "scanConfigurationSettings": true,
  "scheduledReportSettings": true,
  "resourceGroupSettings": true,
  "workflows": true
}

Properties

Name Type Required Restrictions Description
accounts boolean false none none
assetGroups boolean false none none
assets boolean false none none
assetIdentifiers boolean false none none
eventSubscriptions boolean false none none
managedReports boolean false none none
scheduledReports boolean false none none
appstaks boolean false none none
complianceFindings boolean false none none
findings boolean false none none
scanConfigurations boolean false none none
dashboards boolean false none none
integrations boolean false none none
scanPolicies boolean false none none
viewTemplates boolean false none none
users boolean false none none
scanConfigurationSettings boolean false none none
scheduledReportSettings boolean false none none
resourceGroupSettings boolean false none none
workflows boolean false none none

TagsTransformation.ToFrom

{
  "key": "string",
  "allKeys": true,
  "value": "string",
  "allValues": true
}

Properties

Name Type Required Restrictions Description
key string false none none
allKeys boolean false none none
value string false none none
allValues boolean false none none

Terms

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "mainUserMustAccept": true,
  "allUsersMustAccept": true,
  "termsTemplateId": 0,
  "termsTemplateName": "string",
  "termsTemplateContent": "string",
  "customerName": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
mainUserMustAccept boolean true none none
allUsersMustAccept boolean true none none
termsTemplateId integer(int32) true none none
termsTemplateName string false read-only none
termsTemplateContent string false read-only none
customerName string false read-only none

TermsAcceptance

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "termsId": 0
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
termsId integer(int32) true none none

TermsTemplate

{
  "name": "string",
  "content": "string",
  "id": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
content string true none none
id integer(int32) false read-only The ID of the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.

SimplifiedUserEvent

{
  "name": "string",
  "uiNotification": true,
  "emailNotification": true,
  "emailRecipient": "string",
  "eventType": "string"
}

Properties

Name Type Required Restrictions Description
name string false none The name of the entry.
uiNotification boolean false none none
emailNotification boolean false none none
emailRecipient string false none none
eventType string false none none

Logging

{
  "id": 0,
  "logType": 0,
  "event": 0,
  "recipient": "string",
  "eventName": "string",
  "emailEncryptionKey": "string",
  "uiSource": "EXTJS"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
logType integer(int32) false none none
event integer(int64) false none none
recipient string false none none
eventName string false none none
emailEncryptionKey string false none none
uiSource string false none none

Enumerated Values

Property Value
uiSource EXTJS
uiSource PORTAL
uiSource UNIFIED_VIEW

UserRolePermission

{
  "id": 0,
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
name string false read-only The name of the entry.

UserRole

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "system": true,
  "permissionIds": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
system boolean false read-only Set to true when system role
permissionIds [integer] false none The user role permission ids

User

{
  "timezone": "string",
  "portalPreferences": "string",
  "customerId": 0,
  "id": 0,
  "company": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "username": "string",
  "emailEncryptionKey": "string",
  "sshPublicKey": "string",
  "mobilePhone": "string",
  "countryCode": "string",
  "stateCode": "string",
  "lastLogonIp": "string",
  "lastLogonDate": "2019-08-24T14:15:22Z",
  "logons": 0,
  "language": "string",
  "remoteSupport": true,
  "roles": "string",
  "snapshotSubscriptions": 0,
  "snapshotSubscriptionsRemaining": 0,
  "swatSubscriptions": 0,
  "swatSubscriptionsRemaining": 0,
  "customerSuccessManagerEmail": "string",
  "accountManagerEmail": "string",
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
timezone string false none The user time zone
portalPreferences string false none The user portal preferences
customerId integer(int32) false read-only The ID of the customer owning the entry.
id integer(int64) false read-only The ID of the entry.
company string false read-only The user company name
firstName string true none The user first name
lastName string true none The user last name
email string true none The user email address
username string true none The user name
emailEncryptionKey string false none The user public key for email encryption
sshPublicKey string false none The user ssh public key
mobilePhone string false none The user mobile phone number
countryCode string false none The user country code
stateCode string false none The user state code
lastLogonIp string false read-only The user last logon ip address
lastLogonDate string(date-time) false read-only The user last logon date
logons integer(int64) false read-only The user logon numbers
language string false none The user language
remoteSupport boolean false read-only The user remote support status
roles string false read-only The user's roles
snapshotSubscriptions integer(int64) false none The snapshot subscriptions
snapshotSubscriptionsRemaining integer(int64) false none The remaining snapshot subscriptions
swatSubscriptions integer(int64) false none The SWAT subscriptions
swatSubscriptionsRemaining integer(int64) false none The remaining SWAT subscriptions
customerSuccessManagerEmail string false none The email to the customer success manager responsible for this customer
accountManagerEmail string false none The email to the account manager responsible for this customer
tags [Tag] false read-only The tags

ViewTemplateGroup

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "parentId": 0,
  "type": "ASSET_GROUPS"
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
parentId integer(int32) false none The ID of the parent entry.
type string true none none

Enumerated Values

Property Value
type ASSET_GROUPS
type ASSETS
type SCAN_CONFIGURATIONS
type SCHEDULES
type SCANS
type FINDINGS
type REPORTS
type USERS
type ACCOUNTS
type AUDITS
type SCHEDULED_REPORTS
type MANAGED_REPORTS
type INTEGRATIONS
type COMPLIANCE
type TAGS
type VIEW_TEMPLATES
type SCAN_POLICIES
type FINDING_SOLUTIONS
type FINDING_DELTA
type AGENTS
type CONSUMPTION
type WORKFLOWS
type CHECKS
type FINDING_TEMPLATES
type MATCHES

ViewTemplate

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "type": "ASSET_GROUPS",
  "sorting": "string",
  "fields": "string",
  "columnsWidth": "string",
  "system": true,
  "isDefault": true,
  "groupId": 0,
  "filters": [
    {
      "field": "string",
      "comparison": "string",
      "value": "string"
    }
  ],
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
type string true none none
sorting string false none none
fields string false none none
columnsWidth string false none none
system boolean false read-only none
isDefault boolean false none none
groupId integer(int32) false none The view template group id
filters [ViewTemplate.Filter] false none none
tags [Tag] false none [The tags]

Enumerated Values

Property Value
type ASSET_GROUPS
type ASSETS
type SCAN_CONFIGURATIONS
type SCHEDULES
type SCANS
type FINDINGS
type REPORTS
type USERS
type ACCOUNTS
type AUDITS
type SCHEDULED_REPORTS
type MANAGED_REPORTS
type INTEGRATIONS
type COMPLIANCE
type TAGS
type VIEW_TEMPLATES
type SCAN_POLICIES
type FINDING_SOLUTIONS
type FINDING_DELTA
type AGENTS
type CONSUMPTION
type WORKFLOWS
type CHECKS
type FINDING_TEMPLATES
type MATCHES

ViewTemplate.Filter

{
  "field": "string",
  "comparison": "string",
  "value": "string"
}

Properties

Name Type Required Restrictions Description
field string true none none
comparison string true none none
value string true none none

WebFindingComment

{
  "id": 0,
  "comment": "string",
  "findingId": 0,
  "created": "2019-08-24T14:15:22Z",
  "parentCommentId": 0,
  "createdBy": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
comment string true none none
findingId integer(int64) false read-only none
created string(date-time) false read-only The timestamp when the entry was created.
parentCommentId integer(int64) false none none
createdBy string false read-only The name of the user who created the entry.

FindingFile

{
  "id": 0,
  "findingId": 0,
  "type": 0,
  "name": "string",
  "content": "string"
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
findingId integer(int64) false read-only none
type integer(int32) false none none
name string false none The name of the entry.
content string false none none

FileDownloadToken

{
  "token": "string",
  "expire": "2019-08-24T14:15:22Z",
  "fileId": 0
}

Properties

Name Type Required Restrictions Description
token string false read-only none
expire string(date-time) false read-only none
fileId integer(int64) false read-only none

WebFinding

{
  "id": 0,
  "scanId": 0,
  "scheduleId": 0,
  "swatAppId": 0,
  "swatAppName": "string",
  "checkId": 0,
  "source": "Unknown",
  "created": "2019-08-24T14:15:22Z",
  "firstSeen": "2019-08-24T14:15:22Z",
  "lastSeen": "2019-08-24T14:15:22Z",
  "cvssScore": 0,
  "cvssV3Score": 0,
  "nvdCvssScore": 0,
  "cvssVector": "string",
  "cvssV3Vector": "string",
  "nvdCvssVector": "string",
  "sansTop25": "string",
  "cve": "string",
  "osvdb": "string",
  "owasp2004": "string",
  "owasp2007": "string",
  "owasp2010": "string",
  "owasp2013": "string",
  "owasp2017": "string",
  "cwe": "string",
  "hasExploits": true,
  "recreationFlow": "string",
  "impact": "string",
  "riskLevel": "Initial",
  "originalRiskLevel": "Initial",
  "checkCreated": "2019-08-24T14:15:22Z",
  "acceptedBy": "string",
  "accepted": "2019-08-24T14:15:22Z",
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string",
  "persistentFalsePositive": true,
  "falsePositiveBy": "string",
  "falsePositive": "2019-08-24T14:15:22Z",
  "falsePositiveComment": "string",
  "name": "string",
  "hostname": "string",
  "port": 0,
  "protocol": 0,
  "serviceName": "string",
  "productName": "string",
  "productUrl": "string",
  "description": "string",
  "cdata": "string",
  "vulnerabilityType": "Unknown",
  "fixed": true,
  "solutionType": 0,
  "solutionTitle": "string",
  "solution": "string",
  "bugTraq": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
scanId integer(int64) false read-only none
scheduleId integer(int64) false read-only none
swatAppId integer(int64) false read-only none
swatAppName string false read-only none
checkId integer(int64) false read-only none
source string false read-only none
created string(date-time) false read-only The timestamp when the entry was created.
firstSeen string(date-time) false read-only Timestamp when the entry was seen for the first time.
lastSeen string(date-time) false read-only Timestamp when the entry was seen last time.
cvssScore number(double) false read-only none
cvssV3Score number(double) false read-only none
nvdCvssScore number(double) false read-only none
cvssVector string false read-only none
cvssV3Vector string false read-only none
nvdCvssVector string false read-only none
sansTop25 string false read-only none
cve string false read-only none
osvdb string false read-only none
owasp2004 string false read-only An array of OWASP Top 10 2004 classifications of the entry.
owasp2007 string false read-only An array of OWASP Top 10 2007 classifications of the entry.
owasp2010 string false read-only An array of OWASP Top 10 2010 classifications of the entry.
owasp2013 string false read-only An array of OWASP Top 10 2013 classifications of the entry.
owasp2017 string false read-only An array of OWASP Top 10 2017 classifications of the entry.
cwe string false read-only CWE classification of the entry.
hasExploits boolean false read-only none
recreationFlow string false read-only none
impact string false read-only none
riskLevel string false none set to Initial to restore original risk level
originalRiskLevel string false read-only none
checkCreated string(date-time) false read-only none
acceptedBy string false read-only The name of the user who accepted the risk.
accepted string(date-time) false read-only The date when the finding was marked as accepted risk.
acceptedUntil string(date-time) false read-only The date when the risk acceptance will expire.
acceptedComment string false read-only none
persistentFalsePositive boolean false read-only none
falsePositiveBy string false read-only none
falsePositive string(date-time) false read-only none
falsePositiveComment string false read-only none
name string false read-only The name of the entry.
hostname string false read-only none
port integer(int64) false read-only none
protocol integer(int64) false read-only none
serviceName string false read-only none
productName string false read-only none
productUrl string false read-only none
description string false read-only Description of the entry.
cdata string false read-only none
vulnerabilityType string false read-only none
fixed boolean false read-only none
solutionType integer(int32) false read-only none
solutionTitle string false read-only none
solution string false read-only none
bugTraq [integer] false read-only An array of Bugtraq reference IDs.

Enumerated Values

Property Value
source Unknown
source PortScan
source Normal
source Unsafe
source Pci
source PciPreview
source TestCredentials
source Was
source Appsec Scale
source SWAT
source Docker Discovery
source DockerScan
source Cloudsec
source NetworkDiscovery
source CloudDiscovery
source Netsec
riskLevel Initial
riskLevel Recommendation
riskLevel Low
riskLevel Medium
riskLevel High
riskLevel Critical
originalRiskLevel Initial
originalRiskLevel Recommendation
originalRiskLevel Low
originalRiskLevel Medium
originalRiskLevel High
originalRiskLevel Critical
vulnerabilityType Unknown
vulnerabilityType Dos
vulnerabilityType CodeExecution
vulnerabilityType Overflow
vulnerabilityType MemoryCorruption
vulnerabilityType SqlInjection
vulnerabilityType XSS
vulnerabilityType DirectoryTraversal
vulnerabilityType HttpResponseSplitting
vulnerabilityType Bypass
vulnerabilityType GainInformation
vulnerabilityType GainPrivileges
vulnerabilityType CSRF
vulnerabilityType FileInclusion
vulnerabilityType Information

WebFindingInformation

{
  "id": 0,
  "userId": 0,
  "url": "string",
  "method": "string",
  "post": "string",
  "requestHeaders": "string",
  "responseHeaders": "string",
  "content": "string",
  "path": 0,
  "time": "string",
  "data": [
    "string"
  ],
  "match": "string",
  "matchStart": 0,
  "matchLength": 0
}

Properties

Name Type Required Restrictions Description
id integer(int64) false read-only The ID of the entry.
userId integer(int64) false read-only none
url string false read-only none
method string false read-only none
post string false read-only none
requestHeaders string false read-only none
responseHeaders string false read-only none
content string false read-only none
path integer(int64) false read-only none
time string false read-only none
data [string] false read-only none
match string false read-only none
matchStart integer(int32) false read-only none
matchLength integer(int32) false read-only none

WebFindingFalsePositive

{
  "persistentFalsePositive": true,
  "falsePositiveComment": "string"
}

Properties

Name Type Required Restrictions Description
persistentFalsePositive boolean false none setting to true will also mark the same finding for the same target as false positive in subsequent scans of the same target
falsePositiveComment string true none none

WebFindingAccept

{
  "acceptedUntil": "2019-08-24T14:15:22Z",
  "acceptedComment": "string"
}

Properties

Name Type Required Restrictions Description
acceptedUntil string(date-time) true none The date when the risk acceptance will expire.
acceptedComment string false none none

WebReport

{
  "name": "string",
  "format": "PDF",
  "password": "string",
  "zip": true,
  "type": "Technical",
  "level": "Detailed",
  "targets": [
    0
  ],
  "product": "Normal",
  "appsecScaleSchedules": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
name string true none The name of the entry.
format string true none none
password string false none none
zip boolean false none none
type string true none none
level string false none none
targets [integer] false none none
product string true none none
appsecScaleSchedules [integer] false none none

Enumerated Values

Property Value
format PDF
format EXCEL
format XML
format SWATDEMO
type Technical
type Trend
type GroupVulnerability
type Delta
type Pci
type WasDiscovery
type Discovery
type SolutionTaskReport
type SolutionTargetReport
type GroupTrending
type GroupDelta
type Compliance
type Consumption
level Detailed
level Management
level Summary
product Normal
product Pci
product Was
product SWAT
product Compliance
product Appsec Scale
product APPSEC
product CLOUDSEC

Workflow

{
  "id": 0,
  "customerId": 0,
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "updatedBy": "string",
  "createdById": 0,
  "updatedById": 0,
  "name": "string",
  "enabled": true,
  "nextOccurrence": "2019-08-24T14:15:22Z",
  "lastScan": "2019-08-24T14:15:22Z",
  "scheduleIds": [
    0
  ],
  "scannerId": 0,
  "tags": [
    {
      "id": 0,
      "customerId": 0,
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "updatedBy": "string",
      "createdById": 0,
      "updatedById": 0,
      "key": "string",
      "value": "string",
      "inherited": true,
      "count": 0
    }
  ],
  "configurations": [
    {
      "id": 0,
      "type": "SCAN_CONFIGURATION"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id integer(int32) false read-only The ID of the entry.
customerId integer(int32) false none The ID of the customer owning the entry.
created string(date-time) false read-only The timestamp when the entry was created.
updated string(date-time) false read-only The timestamp when the entry was updated.
createdBy string false read-only The name of the user who created the entry.
updatedBy string false read-only The name of the user who updated the entry.
createdById integer(int32) false read-only The ID of the user who created the entry.
updatedById integer(int32) false read-only The ID of the user who updated the entry.
name string true none The name of the entry.
enabled boolean false none Determines if the entry is enabled or not.
nextOccurrence string(date-time) false read-only The scan next occurrence date
lastScan string(date-time) false read-only Last time a scan was performed using this workflow
scheduleIds [integer] false read-only The schedule ids associated with this workflow
scannerId integer(int32) false none The scanner id
tags [Tag] false read-only The tags
configurations [Workflow.Configuration] true none The workflow configurations

Workflow.Configuration

{
  "id": 0,
  "type": "SCAN_CONFIGURATION"
}

The workflow configurations

Properties

Name Type Required Restrictions Description
id integer(int32) true none The ID of the entry.
type string true none none

Enumerated Values

Property Value
type SCAN_CONFIGURATION
type SCHEDULED_REPORT