Riverbed Cascade Shark REST API
Created Mar 27, 2024 at 07:12 PM

Overview

This document describes the RESTful APIs exported by Cascade Shark products.

It is assumed that the reader has practical knowledge of RESTful APIs, so the documentation does not go into detail about what REST is and how to use it. Instead the documentation focuses on what data can be accessed or modified, how to access it, and how to encode requests and responses.

The remainder of this section lists the high level functionality exposed by the REST API and describes the data encodings for objects that are used to encode information for requests and responses.

The Resources section lists the supported REST resources and the methods supported on these resources. For each operation, the document describes what the operation does, the specific HTTP method and URL used, the data types used for requests and responses (if any) and any required or optional URL parameters.

The Data Types section describes commonly used data types in the REST API, including example encodings in both JSON and XML.

The Errors section lists the various error codes that may be returned from REST API operations.

Functionality

The Shark REST API provides programmable access to virtually all of the functionality implemented by the shark appliance, including:

  • Applying views and obtaining view output

  • Enumerating and examining packet data sources on the appliance (interfaces, capture jobs, trace clips, and files)

  • Creating and managing trace clips

  • Uploading and/or extracting packet data from the appliance

  • Extracting and modifiying system configuration, including user configuration, capture job management, basic system configuration, etc.

  • Managing protocol definitions (port names, port groups, layer 4 mappings, and custom applications)

  • Access system version information and apply system updates

  • Managing interface settings, including name, description, tap type, etc.

NOTE: Resources and methods used for authentication to the shark appliance through the API, and other resources related to querying for system information are implemented by the Riverbed Common REST API. Before accessing the Shark API, please familiarize yourself with the Common API documentation.

Data Encoding

Most resources exposed by the API support both XML and JSON encoding for requests and responses. The selection of the specific encoding is accomplished through the use of HTTP headers.

The Accept header should be included with all API requests, and it is used to control the encoding of the response body. To specify XML encoding, the header should be set to Accept: text/xml, and to specify JSON encoding, the header should be set to Accept: application/json. If the Accept header is omitted, the default encoding is XML.

The Content-Type header must be included with all PUT or POST requests that include a request body. To specify XML encoding, the header should be set to Content-Type: text/xml. To specify JSON encoding, the header should be set to Content-Type: application/json.

Some resources support alternative content types for requests and responses, as identified in the specific resource documentation below.

Resources

info: List supported file extensions

Get the list of Shark file extensions

GET https://{device}/api/shark/5.1/info/file_extensions
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "description": string,
    "value": string
  }
]

Example:
[
  {
    "description": "Endace ERF trace file", 
    "value": "erf"
  }, 
  {
    "description": "Pcap trace file", 
    "value": "cap"
  }, 
  {
    "description": "Pcap trace file", 
    "value": "pcap"
  }, 
  {
    "description": "Pcap trace file", 
    "value": "cap0"
  }, 
  {
    "description": "Pcap-ng trace file", 
    "value": "pcapng"
  }, 
  {
    "description": "Pcap-ng trace file", 
    "value": "ntar"
  }, 
  {
    "description": "Shark appliance trace file", 
    "value": "svt"
  }, 
  {
    "description": "Virtual trace file", 
    "value": "pvt"
  }
]
Property Name Type Description Notes
file_extensions <array of <object>>
file_extensions[file_extension] <object>
file_extensions[file_extension].
description
<string> Description of this file extension
file_extensions[file_extension].value <string> File extension value

info: List supported tap types

Get the list of supported tap types

GET https://{device}/api/shark/5.1/info/tap_types
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "type_pretty": string,
    "type": string,
    "description": string
  }
]

Example:
[
  {
    "type": "NONE", 
    "type_pretty": "Shark Internal", 
    "description": "Timestamps applied by the shark itself based on the system clock. "
  }, 
  {
    "type": "CPACKET", 
    "type_pretty": "cPacket", 
    "description": "Timestamps applied by a cPacket cVU or cTap."
  }, 
  {
    "type": "GIGAMON_HEADER", 
    "type_pretty": "Gigamon (Header)", 
    "description": "Timestamps applied by a Gigamon SMT-436 with the SMT-TSP timestamp feature enabled, configured to store timestamps in the packet header."
  }, 
  {
    "type": "GIGAMON_TRAILER", 
    "type_pretty": "Gigamon (Trailer)", 
    "description": "Timestamps applied by a Gigamon SMT-436 with the SMT-TSP timestamp feature enabled, configured to store timestamps in the packet trailer."
  }, 
  {
    "type": "GIGAMON_TRAILER_X12", 
    "type_pretty": "Gigamon (Trailer X12-TS)", 
    "description": "Timestamps applied by a Gigamon GigaPORT-X12-TS, configured to store timestamps in the packet trailer."
  }, 
  {
    "type": "VSS", 
    "type_pretty": "VSS (Timestamp only)", 
    "description": "Timestamps applied by a VSS Monitoring Distributed Traffic Capture System (DTCS), configured to store only timestamps in the packet."
  }
]
Property Name Type Description Notes
tap_types <array of <object>> List of supported tap types
tap_types[tap_type] <object> Information describing a supported tap type
tap_types[tap_type].type_pretty <string> User-friendly name for the specific type of tap
tap_types[tap_type].type <string> The type code for the tap Values: NONE, CPACKET, GIGAMON_HEADER, GIGAMON_TRAILER, GIGAMON_TRAILER_X12, VSS, VSS_PORT_ID, ANUE, ARISTA, UNKNOWN
tap_types[tap_type].description <string> Description of the specific type of tap

info: Get job defaults

Get capture job default settings

GET https://{device}/api/shark/5.1/info/job_defaults
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "index_size_limit": number,
  "index_size_pct": number,
  "retention_size_pct": number,
  "retention_size_limit": number,
  "snap_length": number,
  "job_name": string
}

Example:
{
  "index_size_limit": 128043712, 
  "retention_size_limit": 12804371251, 
  "snap_length": 65535, 
  "index_size_pct": 0.427825, 
  "retention_size_pct": 30.0, 
  "job_name": "New Job 1"
}
Property Name Type Description Notes
job_defaults <object> Default values for a new capture job
job_defaults.index_size_limit <number> Default size limit (bytes) of index for new capture job
job_defaults.index_size_pct <number> Default max percent of disk for index
job_defaults.retention_size_pct <number> Default max percent of disk for retained capture job
job_defaults.retention_size_limit <number> Default size limit (bytes) on retained capture job
job_defaults.snap_length <number> Default snap length
job_defaults.job_name <string> Default name of new job

info: List mac vendors

Get the list of supported MAC vendors (NOTE: This is a long listing.)

GET https://{device}/api/shark/5.1/info/mac_vendors
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "code": string,
    "name": string
  }
]

Example:
[
  {
    "code": "00:00:00", 
    "name": "00:00:00"
  }, 
  {
    "code": "00:00:01", 
    "name": "Xerox"
  }
]
Property Name Type Description Notes
mac_vendors <array of <object>> List of MAC vendor codes
mac_vendors[mac_vendor] <object> Vendor information
mac_vendors[mac_vendor].code <string> Vendor code
mac_vendors[mac_vendor].name <string> Vendor name

info: List timezones

Get the list of supported timezones

GET https://{device}/api/shark/5.1/info/timezones
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "timezones": [
    string
  ],
  "selected": string
}

Example:
{
  "timezones": [
    "Africa/Abidjan", 
    "Africa/Accra", 
    "Africa/Addis_Ababa", 
    "Africa/Algiers", 
    "Africa/Asmara", 
    "Africa/Bamako", 
    "Africa/Bangui", 
    "Africa/Banjul", 
    "America/Kentucky/Louisville", 
    "America/Kentucky/Monticello", 
    "America/Kralendijk", 
    "America/La_Paz", 
    "America/Lima", 
    "America/Los_Angeles", 
    "America/Lower_Princes", 
    "America/Maceio", 
    "America/Managua", 
    "America/Manaus", 
    "America/Marigot", 
    "America/Martinique"
  ], 
  "selected": "America/Los_Angeles"
}
Property Name Type Description Notes
timezone_config <object> Timezone information
timezone_config.timezones <array of <string>> List of supported timezones
timezone_config.timezones[timezone] <string>
timezone_config.selected <string> Currently selected timezone

info: List supported data types

Get the list of supported Shark data types in views

GET https://{device}/api/shark/5.1/info/types
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "name": string,
    "calculations": [
      string
    ]
  }
]

Example:
[
  {
    "name": "NONE", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "PROTOCOL", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "BOOLEAN", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "UINT8", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "UINT16", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "UINT24", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "UINT32", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "UINT64", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "INT8", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "INT16", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "INT24", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "INT32", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "INT64", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "FLOAT", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "DOUBLE", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "ABSOLUTE_TIME", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "RELATIVE_TIME", 
    "calculations": [
      "NONE", 
      "SUM", 
      "MAX", 
      "MIN", 
      "AVG", 
      "TIME_AVG", 
      "REPLACE"
    ]
  }, 
  {
    "name": "STRING", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "STRINGZ", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "SHORT_STRING", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "UINT_STRING", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "ETHER", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "BYTES", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "UINT_BYTES", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "IPv4", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "IPv6", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "UDP_PORT", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "TCP_PORT", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "IPXNET", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "FRAMENUM", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "PCRE", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "GUID", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "OID", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "NUM_TYPES", 
    "calculations": [
      "NONE"
    ]
  }, 
  {
    "name": "INDEX", 
    "calculations": [
      "NONE", 
      "MAX", 
      "MIN"
    ]
  }, 
  {
    "name": "EUI64", 
    "calculations": [
      "NONE"
    ]
  }
]
Property Name Type Description Notes
types <array of <object>> List of supported Shark types
types[type] <object> Information for one Shark type
types[type].name <string> Shark type ID Values: NONE, PROTOCOL, BOOLEAN, UINT8, UINT16, UINT24, UINT32, UINT64, INT8, INT16, INT24, INT32, INT64, FLOAT, DOUBLE, ABSOLUTE_TIME, RELATIVE_TIME, STRING, STRINGZ, SHORT_STRING, UINT_STRING, ETHER, BYTES, UINT_BYTES, IPv4, IPv6, UDP_PORT, TCP_PORT, IPXNET, FRAMENUM, PCRE, GUID, OID, NUM_TYPES, INDEX, EUI64
types[type].calculations <array of <string>> List of Shark calculations
types[type].calculations[calculation] <string> Calculation type Values: NONE, SUM, MAX, MIN, AVG, TIME_AVG, REPLACE

info: List supported extractor fields

Get the list of supported Shark view extractor fields

GET https://{device}/api/shark/5.1/info/fields
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "index": boolean,
    "group": string,
    "description": string,
    "dimension": boolean,
    "multi_segment": boolean,
    "index_calculations": [
      string
    ],
    "display_type": string,
    "type": string,
    "id": string,
    "name": string
  }
]

Example:
[
  {
    "group": "arp", 
    "description": "Byte count of ARP packets", 
    "display_type": "DEC", 
    "type": "UINT64", 
    "id": "arp.bytes", 
    "name": "ARP Bytes"
  }, 
  {
    "group": "cifs", 
    "description": "Indication of whether the current packet contains CIFS traffic", 
    "display_type": "DEC", 
    "type": "BOOLEAN", 
    "id": "cifs.is_cifs", 
    "name": "CIFS"
  }
]
Property Name Type Description Notes
fields <array of <object>>
fields[field] <object>
fields[field].index <boolean> Whether or not this field is supported by the index Optional
fields[field].group <string> Group in which the field belongs
fields[field].description <string> Description of this field Optional
fields[field].dimension <boolean> Whether or not the field is a dimension Optional
fields[field].multi_segment <boolean> Whether or not the field is used for multi-segment sources Optional
fields[field].index_calculations <array of <string>> List of calculations on this field that are supported by the index Optional
fields[field].index_calculations
[index_calculation]
<string> Calculation type Values: NONE, SUM, MAX, MIN, AVG, TIME_AVG, REPLACE
fields[field].display_type <string> Display information for a numeric field Optional; Values: NONE, DEC, HEX, OCT, DEC_HEX, HEX_DEC, PERC
fields[field].type <string> Type of the field Values: NONE, PROTOCOL, BOOLEAN, UINT8, UINT16, UINT24, UINT32, UINT64, INT8, INT16, INT24, INT32, INT64, FLOAT, DOUBLE, ABSOLUTE_TIME, RELATIVE_TIME, STRING, STRINGZ, SHORT_STRING, UINT_STRING, ETHER, BYTES, UINT_BYTES, IPv4, IPv6, UDP_PORT, TCP_PORT, IPXNET, FRAMENUM, PCRE, GUID, OID, NUM_TYPES, INDEX, EUI64
fields[field].id <string> Identifier of the field
fields[field].name <string> User-friendly name of the field

users / groups: Delete user

Delete local user

DELETE https://{device}/api/shark/5.1/auth/users/{user_id}
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

users / groups: List users

Get the list of local users

GET https://{device}/api/shark/5.1/auth/users
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ user ]

Example:
[
  {
    "is_locked": false, 
    "can_be_locked": false, 
    "is_admin": true, 
    "name": "admin", 
    "groups": [
      "Administrators"
    ]
  }, 
  {
    "is_locked": false, 
    "can_be_locked": false, 
    "is_admin": false, 
    "name": "normaluser", 
    "groups": [
      "NormalUsers"
    ]
  }
]
Property Name Type Description Notes
users <array of <user>> List of users
users[user] <user> Instance of a <user>

users / groups: Update user locked state

Update locked status of user [USER_ID]

PUT https://{device}/api/shark/5.1/auth/users/{user_id}/locked
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
user_id <string> User identifier
Request Body

Provide a request body with the following structure:

  • JSON
{
  "value": boolean
}

Example:
{
  "value": false
}
Property Name Type Description Notes
locked <object> Unlock a locked user
locked.value <boolean> 'false' to unlock a locked user. 'true' value not supported as you cannot lock an unlocked user.
Response Body

On success, the server does not provide any body in the responses.

users / groups: Update user password

Update password for local user

PUT https://{device}/api/shark/5.1/auth/users/{user_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
user_id <string> User identifier
Request Body

Provide a request body with the following structure:

  • JSON
{
  "existing_password": string,
  "new_password": string
}

Example:
{
  "existing_password": "old-password", 
  "new_password": "new-password"
}
Property Name Type Description Notes
password <object> Updates user password
password.existing_password <string> Existing password Optional
password.new_password <string> New password
Response Body

On success, the server does not provide any body in the responses.

users / groups: Get group detail

Retrieve a user group

GET https://{device}/api/shark/5.1/auth/groups/{group_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
group_id <string> Group identifier
Response Body

Returns a group data object.

users / groups: List groups

Get the list of local user groups defined for this Shark

GET https://{device}/api/shark/5.1/auth/groups
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ group ]

Example:
[
  {
    "name": "Administrators", 
    "capabilities": [
      "CAPABILITY_ADMINISTRATOR"
    ], 
    "description": "Administrators"
  }, 
  {
    "name": "NormalUsers", 
    "capabilities": [
      "CAPABILITY_APPLY_VIEWS_ON_FILES", 
      "CAPABILITY_APPLY_VIEWS_ON_INTERFACES", 
      "CAPABILITY_SHARE_VIEWS", 
      "CAPABILITY_CREATE_FILES", 
      "CAPABILITY_IMPORT_FILES", 
      "CAPABILITY_EXPORT_FILES", 
      "CAPABILITY_SCHEDULE_WATCHES", 
      "CAPABILITY_ACCESS_PROBE_FILES"
    ], 
    "description": "Normal unprivileged users"
  }
]
Property Name Type Description Notes
groups <array of <group>> List of groups
groups[group] <group> Instance of a <group>

users / groups: Delete group

Delete an existing user group

DELETE https://{device}/api/shark/5.1/auth/groups/{group_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
group_id <string> Group identifier
Response Body

On success, the server does not provide any body in the responses.

users / groups: Get users detail

Get info on local user

GET https://{device}/api/shark/5.1/auth/users/{user_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
user_id <string> User identifier
Response Body

Returns a user data object.

users / groups: Create group

Create a new local user group

POST https://{device}/api/shark/5.1/auth/groups
Authorization

This request requires authorization.

Request Body

Provide a group data object.

Response Body

On success, the server does not provide any body in the responses.

users / groups: Create user

Create new local user

POST https://{device}/api/shark/5.1/auth/users
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "can_be_locked": boolean,
  "password": string,
  "name": string,
  "groups": [
    string
  ]
}

Example:
{
  "can_be_locked": true, 
  "password": "testing", 
  "name": "test", 
  "groups": [
    "NormalUsers", 
    "Viewers"
  ]
}
Property Name Type Description Notes
user <object> Information to create a new user
user.can_be_locked <boolean> 'true' if user can get locked, 'false' otherwise
user.password <string> User password
user.name <string> User name
user.groups <array of <string>> List of groups of which the user is a member
user.groups[group] <string>
Response Body

On success, the server does not provide any body in the responses.

jobs: Delete job

Delete capture job

DELETE https://{device}/api/shark/5.1/jobs/{job_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

On success, the server does not provide any body in the responses.

jobs: Get job information

Get information (status and config) for a capture job

GET https://{device}/api/shark/5.1/jobs/{job_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "status": job_status,
  "index": job_index_info,
  "config": job_config,
  "id": string
}

Example:
{
  "status": {
    "packet_end_time": 1345512749000000000, 
    "state": "STOPPED", 
    "packet_start_time": 1344456875000000000, 
    "packet_size": 44781772
  }, 
  "index": {
    "status": "RUNNING", 
    "start_time": 1344456875000000000, 
    "end_time": 1345512749000000000, 
    "size": 52348800
  }, 
  "config": {
    "packet_retention": {
      "size_limit": 5368709120
    }, 
    "name": "New Job 1", 
    "indexing": {
      "synced": false, 
      "size_limit": 52428800, 
      "dpi_enabled": true, 
      "time_limit": 604800
    }, 
    "interface_description": "mon0", 
    "snap_length": 65535, 
    "interface_name": "mon0"
  }, 
  "id": "00000001"
}
Property Name Type Description Notes
job <object> A capture job
job.status <job_status> Status information for this job
job.index <job_index_info> Index information for this job
job.config <job_config> Configuration information for this job
job.id <string> Job ID

jobs: Update job status

Update running status of capture job

PUT https://{device}/api/shark/5.1/jobs/{job_id}/status
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Request Body

Provide a request body with the following structure:

  • JSON
{
  "clear_packets": boolean,
  "state": string
}

Example:
{
  "clear_packets": true, 
  "state": "STOPPED"
}
Property Name Type Description Notes
status <object> Update job state, optionally clear packets for job
status.clear_packets <boolean> 'true' to clear packets for this job Optional
status.state <string> Running state of a capture job Values: ACTIVE, RUNNING, STOPPED, UNKNOWN
Response Body

On success, the server does not provide any body in the responses.

jobs: Get job status

Get status information for a capture job

GET https://{device}/api/shark/5.1/jobs/{job_id}/status
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

Returns a job_status data object.

jobs: List jobs

Get the list of configured capture jobs

GET https://{device}/api/shark/5.1/jobs
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "status": job_status,
    "index": job_index_info,
    "config": job_config,
    "id": string
  }
]

Example:
[
  {
    "status": {
      "packet_end_time": 1345512749, 
      "state": "STOPPED", 
      "packet_start_time": 1344456875, 
      "packet_size": 44781772
    }, 
    "config": {
      "snap_length": 65535, 
      "interface_name": "mon0", 
      "packet_retention": {
        "size_limit": 5368709120
      }, 
      "name": "New Job 1", 
      "interface_description": "mon0"
    }, 
    "id": "00000001"
  }
]
Property Name Type Description Notes
jobs <array of <object>> List of capture jobs
jobs[job] <object> A capture job
jobs[job].status <job_status> Status information for this job
jobs[job].index <job_index_info> Index information for this job
jobs[job].config <job_config> Configuration information for this job
jobs[job].id <string> Job ID

jobs: Get job config

Get configuration for capture job

GET https://{device}/api/shark/5.1/jobs/{job_id}/config
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

Returns a job_config data object.

jobs: Get job index status

Index information for capture job.

GET https://{device}/api/shark/5.1/jobs/{job_id}/index
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

Returns a job_index_info data object.

jobs: Update job configuration

Update configuration of a capture job

PUT https://{device}/api/shark/5.1/jobs/{job_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Request Body

Provide a job_config data object.

Response Body

On success, the server does not provide any body in the responses.

jobs: Get job stats

Statistics for a capture job

GET https://{device}/api/shark/5.1/jobs/{job_id}/stats
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
job_id <string> Job identifier
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "packets_dropped": {
    "last_minute": number,
    "last_hour": number,
    "total": number,
    "last_second": number
  },
  "packets_written": {
    "last_minute": number,
    "last_hour": number,
    "total": number,
    "last_second": number
  }
}

Example:
{
  "packets_dropped": {
    "last_minute": 0, 
    "last_second": 0, 
    "total": 0, 
    "last_hour": 0
  }, 
  "packets_written": {
    "last_minute": 1815, 
    "last_second": 0, 
    "total": 123387, 
    "last_hour": 3019
  }
}
Property Name Type Description Notes
job_stats <object> Capture job statistics
job_stats.packets_dropped <object> Statistics for the number of packets that arrived at the capture port but could not be written successfully to the packet storage
job_stats.packets_dropped.last_minute <number> Number of packets in the last minute
job_stats.packets_dropped.last_hour <number> Number of packets in the last hour
job_stats.packets_dropped.total <number> Total number of packets since the job was started
job_stats.packets_dropped.last_second <number> Number of packets in the last second
job_stats.packets_written <object> Statistics for the number of packets successfully written to the packet storage
job_stats.packets_written.last_minute <number> Number of packets in the last minute
job_stats.packets_written.last_hour <number> Number of packets in the last hour
job_stats.packets_written.total <number> Total number of packets since the job was started
job_stats.packets_written.last_second <number> Number of packets in the last second

jobs: Create job

Create a new capture job

POST https://{device}/api/shark/5.1/jobs
Authorization

This request requires authorization.

Request Body

Provide a job_config data object.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "id": string
}

Example:
{
  "id": "00000001"
}
Property Name Type Description Notes
job <object> Information for a new job
job.id <string> Job id

packet export: Get job export packets

Get the packet stream for an export operation.

GET https://{device}/api/shark/5.1/{source_type}/{source_id}/exports/{export_id}/packets
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
export_id <string> Export operation identifier.
Response Body

On success, the server returns a request body containing data with content type application/vnd.tcpdump.pcap.

packet export: List export operations

Get the list of active export operations from the given source.

GET https://{device}/api/shark/5.1/{source_type}/{source_id}/exports
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ export ]

Example:
[
  {
    "status": {
      "owner": "admin", 
      "bytes_approx": 855784, 
      "state": "RUNNING", 
      "creation_time": 1364334117658433000
    }, 
    "config": {
      "output_format": "PCAP_US", 
      "start_time": 1364230933, 
      "end_time": 1364317200
    }, 
    "id": "000193E1"
  }
]
Property Name Type Description Notes
exports <array of <export>> List of exports currently under way
exports[export] <export> Instance of an <export>

packet export: Stop export operation

Stop an export operation

DELETE https://{device}/api/shark/5.1/{source_type}/{source_id}/exports/{export_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
export_id <string> Export operation identifier.
Response Body

On success, the server does not provide any body in the responses.

packet export: Download job packets

Export packets from a capture job. Response content type is 'application/vnd.tcpdump.pcap'.

GET https://{device}/api/shark/5.1/{source_type}/{source_id}/packets?file_format={string}&seconds={number}&bytes={number}&filename={string}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_format <string> Format of output file: 'PCAP_US' for PCAP format (microsecond resolution); 'PCAP_NS' for PCAP format (nanosecond resolution); 'PCAPNG_US' for PCAP-NG format (microsecond resolution); or 'PCAPNG_NS' for PCAP_NG format (nanosecond resolution). Optional
seconds <number> Limit on total time (in seconds) of packet extraction. Optional
packets <number> Limit on number of packets to be extracted. Optional
bytes <number> Limit on number of bytes to be extracted. Optional
filename <string> Name of output filename. This will appear in the 'content-disposition' header of the response. Optional
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
Response Body

On success, the server does not provide any body in the responses.

packet export: Get export operation status

Get status of an export operation

GET https://{device}/api/shark/5.1/{source_type}/{source_id}/exports/{export_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
export_id <string> Export operation identifier.
Response Body

Returns an export data object.

packet export: Start export operation

Create a new export operation from the given source. This begins the process of extracting packets from the given source and returns a handle through which the caller can obtain status on the operation as well as download the packets themselves.

POST https://{device}/api/shark/5.1/{source_type}/{source_id}/exports
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
source_id <string> Specific source identifier of type {source_type}. For example, if source_type is "jobs", then the {source_id} is the job identifier.
source_type <string> Packet source type identifier. Must be one of "interfaces", "jobs", "clips", or "fs".
Request Body

Provide an export_config data object.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "id": string
}

Example:
{
  "id": "000193E1"
}
Property Name Type Description Notes
export_id <object>
export_id.id <string> ID of created export

interfaces: Update interface settings

Update information on capture interface {interface_id}.

PUT https://{device}/api/shark/5.1/interfaces/{interface_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
interface_id <string> Interface identifier
Request Body

Provide a request body with the following structure:

  • JSON
{
  "tap_type": string,
  "name": string,
  "pass_thru": string,
  "dedup_status": string,
  "speed_options": [
    {
      "status": string,
      "speed_mbps": string,
      "duplex_type": string
    }
  ],
  "board_speed": {
    "status": string,
    "speed_mbps": string,
    "duplex_type": string
  },
  "description": string
}

Example:
{
  "dedup_status": "ENABLED", 
  "tap_type": "GIGAMON_HEADER", 
  "speed_options": [
    {
      "speed_mbps": "MBPS_10", 
      "duplex_type": "HALF"
    }, 
    {
      "speed_mbps": "MBPS_10", 
      "duplex_type": "FULL"
    }, 
    {
      "speed_mbps": "MBPS_100", 
      "duplex_type": "HALF"
    }, 
    {
      "speed_mbps": "MBPS_100", 
      "duplex_type": "FULL"
    }, 
    {
      "speed_mbps": "MBPS_1000", 
      "duplex_type": "FULL"
    }
  ]
}
Property Name Type Description Notes
interface_settings <object> Update information for a Shark physical interface. Note: If new passthru mode setting is present, all other settings are ignored.
interface_settings.tap_type <string> New tap type setting Optional; Values: NONE, CPACKET, GIGAMON_HEADER, GIGAMON_TRAILER, GIGAMON_TRAILER_X12, VSS, VSS_PORT_ID, ANUE, ARISTA, UNKNOWN
interface_settings.name <string> New alias for this interface Optional
interface_settings.pass_thru <string> New passthru mode status Optional; Values: ENABLED, DISABLED, NOT_SUPPORTED
interface_settings.dedup_status <string> New packet deduplication setting Optional; Values: ENABLED, DISABLED, NOT_SUPPORTED
interface_settings.speed_options <array of <object>> List of link speed options Optional
interface_settings.speed_options
[link_speed_option]
<object> Speed, duplex type, and status of a speed option
interface_settings.speed_options
[link_speed_option].status
<string> Status of this link speed option for this interface Optional; Values: SUPPORTED, ENABLED, NEGOTIATED
interface_settings.speed_options
[link_speed_option].speed_mbps
<string> Throughput for this speed option Values: MBPS_10, MBPS_100, MBPS_1000, MBPS_10000
interface_settings.speed_options
[link_speed_option].duplex_type
<string> Duplex type for this speed option Values: HALF, FULL, UNKNOWN
interface_settings.board_speed <object> Speed, duplex type, and status of a speed option Optional
interface_settings.board_speed.status <string> Status of this link speed option for this interface Optional; Values: SUPPORTED, ENABLED, NEGOTIATED
interface_settings.board_speed.
speed_mbps
<string> Throughput for this speed option Values: MBPS_10, MBPS_100, MBPS_1000, MBPS_10000
interface_settings.board_speed.
duplex_type
<string> Duplex type for this speed option Values: HALF, FULL, UNKNOWN
interface_settings.description <string> New description string for this interface Optional
Response Body

On success, the server does not provide any body in the responses.

interfaces: Get interface info

Get information on capture interface {interface_id}.

GET https://{device}/api/shark/5.1/interfaces/{interface_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
interface_id <string> Interface identifier
Response Body

Returns an interface data object.

interfaces: List interfaces

Get the list of capture interfaces

GET https://{device}/api/shark/5.1/interfaces?filter={string}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
filter <string> 'device' to limit list to physical devices; 'virtual' to limit list to virtual files; 'aggregating' to limit list to aggregating ports. Optional
Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ interface ]

Example:
[
  {
    "interface_components": [], 
    "description": "TurboCap 1Gb device no.0", 
    "link": {
      "status": "UP", 
      "tap_type": "NONE", 
      "stats": {
        "bytes_rx": 73478815, 
        "packets_rx": 1007752
      }, 
      "dedup_status": "DISABLED", 
      "speed_options": [
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "NEGOTIATED", 
          "speed_mbps": "MBPS_1000", 
          "duplex_type": "FULL"
        }
      ], 
      "mac_address": "00:e0:ed:1e:9d:1a", 
      "blink_status": "OFF", 
      "type": "EN10MB"
    }, 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1a)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "TURBOCAP_ADAPTER", 
    "id": "tc0", 
    "name": "tc0"
  }, 
  {
    "interface_components": [], 
    "description": "TurboCap 1Gb device no.1", 
    "link": {
      "status": "DOWN", 
      "tap_type": "NONE", 
      "stats": {
        "bytes_rx": 0, 
        "packets_rx": 0
      }, 
      "dedup_status": "DISABLED", 
      "speed_options": [
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_1000", 
          "duplex_type": "FULL"
        }
      ], 
      "mac_address": "00:e0:ed:1e:9d:1b", 
      "blink_status": "OFF", 
      "type": "EN10MB"
    }, 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1a)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "TURBOCAP_ADAPTER", 
    "id": "tc1", 
    "name": "tc1"
  }, 
  {
    "interface_components": [], 
    "description": "TurboCap 1Gb device no.2", 
    "link": {
      "status": "UP", 
      "tap_type": "NONE", 
      "stats": {
        "bytes_rx": 0, 
        "packets_rx": 0
      }, 
      "dedup_status": "DISABLED", 
      "speed_options": [
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "NEGOTIATED", 
          "speed_mbps": "MBPS_1000", 
          "duplex_type": "FULL"
        }
      ], 
      "mac_address": "00:e0:ed:1e:9d:1c", 
      "blink_status": "OFF", 
      "type": "EN10MB"
    }, 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1c)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "TURBOCAP_ADAPTER", 
    "id": "tc2", 
    "name": "tc2"
  }, 
  {
    "interface_components": [], 
    "description": "TurboCap 1Gb device no.3", 
    "link": {
      "status": "UP", 
      "tap_type": "NONE", 
      "stats": {
        "bytes_rx": 0, 
        "packets_rx": 0
      }, 
      "dedup_status": "DISABLED", 
      "speed_options": [
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_10", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "FULL"
        }, 
        {
          "status": "ENABLED", 
          "speed_mbps": "MBPS_100", 
          "duplex_type": "HALF"
        }, 
        {
          "status": "NEGOTIATED", 
          "speed_mbps": "MBPS_1000", 
          "duplex_type": "FULL"
        }
      ], 
      "mac_address": "00:e0:ed:1e:9d:1d", 
      "blink_status": "OFF", 
      "type": "EN10MB"
    }, 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1c)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "TURBOCAP_ADAPTER", 
    "id": "tc3", 
    "name": "tc3"
  }, 
  {
    "interface_components": [
      "tc2", 
      "tc3"
    ], 
    "description": "TurboCap Board Aggregating Port", 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1c)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "BOARD_AGGREGATING", 
    "id": "tc_bap_00e0ed1e9d1c", 
    "name": "tc_bap_00e0ed1e9d1c"
  }, 
  {
    "interface_components": [
      "tc0", 
      "tc1"
    ], 
    "description": "TurboCap Board Aggregating Port (2)", 
    "board": {
      "pass_thru": "DISABLED", 
      "type": "1G_COPPER", 
      "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1a)"
    }, 
    "is_promiscuous_mode": true, 
    "type": "BOARD_AGGREGATING", 
    "id": "tc_bap_00e0ed1e9d1a", 
    "name": "tc_bap_00e0ed1e9d1a"
  }, 
  {
    "interface_components": [
      "tc0", 
      "tc1", 
      "tc2", 
      "tc3"
    ], 
    "description": "TurboCap Aggregating Port", 
    "is_promiscuous_mode": true, 
    "type": "AGGREGATING", 
    "id": "tc_tcap", 
    "name": "tc_tcap"
  }
]
Property Name Type Description Notes
interfaces <array of <interface>> List of interfaces
interfaces[interface] <interface> Instance of an <interface>

views: Get view acl

Get the access control list for running view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/acl
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "users": [
    {
      "owner": boolean,
      "name": string
    }
  ],
  "groups": [
    string
  ]
}

Example:
{
  "users": [
    {
      "owner": true, 
      "name": "admin"
    }
  ], 
  "groups": []
}
Property Name Type Description Notes
acl <object> Access Control List
acl.users <array of <object>> Users in the access control list
acl.users[user] <object> User in the access list
acl.users[user].owner <boolean> True if the user is the owner of the view
acl.users[user].name <string> User name
acl.groups <array of <string>> Groups in the access control list
acl.groups[group] <string>

views: Unlock view

Unlock view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/unlock
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

views: Get view statistics

Get processing statistics for view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/stats
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "locked": boolean,
  "data_source_type": string,
  "state": string,
  "input_size": number,
  "time_details": {
    "start": timestamp-hp,
    "end": timestamp-hp,
    "delta": number
  },
  "processed_size": number
}

Example:
{
  "locked": false, 
  "data_source_type": "PACKETS", 
  "state": "DONE", 
  "input_size": 190654505, 
  "time_details": {
    "start": 1195590481719742000, 
    "end": 1195590918719742000, 
    "delta": 1000000000
  }, 
  "processed_size": 190654505
}
Property Name Type Description Notes
stats <object> View statistics
stats.locked <boolean> True if the view is locked
stats.data_source_type <string> Data source type Values: INDEX, PACKETS
stats.state <string> Handle state Values: UNINITIALIZED, LOADED, PARAMS_LOADED, INITIALIZED, READY, RUNNING, ERRORS, DONE, CLOSING, PAUSED
stats.input_size <number> Size (in bytes) of the input source to process
stats.time_details <object> Time details
stats.time_details.start <timestamp-hp> Output start time. Can be 0 if the output has no data.
stats.time_details.end <timestamp-hp> Output end time. Can be 0 if the output has no data.
stats.time_details.delta <number> Output sampling rate
stats.processed_size <number> Size (in bytes) of the input source currently processed

views: Get view output legend

Get data legend for the output {output_id} in view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/data/{output_id}/legend
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "description": string,
    "calculation": string,
    "id": string,
    "field": string,
    "base": string,
    "type": string,
    "dimension": boolean,
    "name": string
  }
]

Example:
[
  {
    "description": "IP protocol, TCP port or UDP port converted into a traffic type string (e.g. 'Email' or 'Web').", 
    "calculation": "NONE", 
    "dimension": true, 
    "field": "generic.application", 
    "base": "NONE", 
    "type": "SHORT_STRING", 
    "id": "x0", 
    "name": "Traffic Type"
  }, 
  {
    "description": "Bit Count", 
    "calculation": "TIME_AVG", 
    "dimension": false, 
    "field": "generic.bits", 
    "base": "DEC", 
    "type": "UINT64", 
    "id": "x1", 
    "name": "Bits"
  }
]
Property Name Type Description Notes
legend <array of <object>> Output legend
legend[label] <object> Legend Entry
legend[label].description <string> Description
legend[label].calculation <string> Calculation type Values: NONE, SUM, MAX, MIN, AVG, TIME_AVG, REPLACE
legend[label].id <string> Id
legend[label].field <string> Field
legend[label].base <string> Base Values: NONE, DEC, HEX, OCT, DEC_HEX, HEX_DEC, PERC
legend[label].type <string> Type Values: NONE, PROTOCOL, BOOLEAN, UINT8, UINT16, UINT24, UINT32, UINT64, INT8, INT16, INT24, INT32, INT64, FLOAT, DOUBLE, ABSOLUTE_TIME, RELATIVE_TIME, STRING, STRINGZ, SHORT_STRING, UINT_STRING, ETHER, BYTES, UINT_BYTES, IPv4, IPv6, UDP_PORT, TCP_PORT, IPXNET, FRAMENUM, PCRE, GUID, OID, NUM_TYPES, INDEX, EUI64
legend[label].dimension <boolean> True if dimension
legend[label].name <string> Name

views: Create view

Create a new view.

POST https://{device}/api/shark/5.1/views
Authorization

This request requires authorization.

Request Body

Provide a view data object.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "id": string,
  "data_source_type": string
}

Example:
{
  "id": "00018ED5", 
  "data_source_type": "PACKETS"
}
Property Name Type Description Notes
view_id <object> ID of the newly created view
view_id.id <string> View ID
view_id.data_source_type <string> Data source type Values: INDEX, PACKETS

views: Update view acl

Modify the access control list for running view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/acl
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "action": string,
  "value": string
}

Example:
{
  "action": "ADD_USER", 
  "value": "normaluser"
}
Property Name Type Description Notes
acl_action <object> Action type on the access list
acl_action.action <string> Action type on the access list Values: ADD_USER, REMOVE_USER, ADD_GROUP, REMOVE_GROUP
acl_action.value <string> User/group name depending on the action type
Response Body

On success, the server does not provide any body in the responses.

views: List views

Get the list of currently running views.

GET https://{device}/api/shark/5.1/views
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "locked": boolean,
    "creation_time": timestamp-hp,
    "watches": [
      {
        "last_event_time": timestamp-hp,
        "event_count": number,
        "last_error": string,
        "state": string,
        "first_event_time": timestamp-hp,
        "id": string
      }
    ],
    "state": string,
    "owner": string,
    "id": string
  }
]

Example:
[
  {
    "locked": false, 
    "creation_time": 1348518372678002, 
    "watches": [], 
    "state": "DONE", 
    "owner": "admin", 
    "id": "00018ED5"
  }
]
Property Name Type Description Notes
views <array of <object>> View list
views[view] <object> Summary information for a view
views[view].locked <boolean> True if locked
views[view].creation_time <timestamp-hp> View creation time
views[view].watches <array of <object>> Watch list for this view
views[view].watches[watch] <object>
views[view].watches[watch].
last_event_time
<timestamp-hp> Time of the last triggered event
views[view].watches[watch].event_count <number> Number of triggered events
views[view].watches[watch].last_error <string> Error description, if the watch is in an error state
views[view].watches[watch].state <string> Watch state Values: UNINITIALIZED, LOADED, PARAMS_LOADED, INITIALIZED, READY, RUNNING, ERRORS, DONE, CLOSING, PAUSED
views[view].watches[watch].
first_event_time
<timestamp-hp> Time of the first triggered event
views[view].watches[watch].id <string> Watch Id
views[view].state <string> View state Values: UNINITIALIZED, LOADED, PARAMS_LOADED, INITIALIZED, READY, RUNNING, ERRORS, DONE, CLOSING, PAUSED
views[view].owner <string> Owner user name
views[view].id <string> View ID

views: Lock view

Lock view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/lock
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

views: Get view configuration

Get configuration for view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}
Authorization

This request requires authorization.

Response Body

Returns a view data object.

views: Get view output data

Get data for the output {output_id} in view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/data/{output_id}?countonly={number}&end={number}&toentry={number}&start={number}&fromentry={number}&delta={string}&sorttype={string}&aggregated={string}&sortby={string}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
countonly <number> (Only available when 'aggregated' = 'true'.) Return number of rows only. Optional
end <number> Timestamp value representing end time. Optional
toentry <number> In paged output: number of last output row. Optional
start <number> Timestamp value representing start time. Optional
fromentry <number> In paged output: number of first output row. NOTE: Row numbers start from 0. Optional
delta <string> Sampling interval, in nanoseconds Optional
sorttype <string> 'ascending' or 'descending' Optional
aggregated <string> 'true' if output is in a single sample. Optional
sortby <string> Name (x0, x1, etc.) of column used to sort output values. Optional
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "samples": [
    {
      "gap_start": timestamp-hp,
      "value_sum": number,
      "value_count": number,
      "p": number,
      "u": number,
      "t": timestamp-hp,
      "vals": [
        [
          string
        ]
      ],
      "gap_end": timestamp-hp
    }
  ]
}

Example:
{
  "samples": [
    {
      "value_count": 5, 
      "p": 391, 
      "vals": [
        [
          "IM", 
          "776"
        ], 
        [
          "ICMP", 
          "3424"
        ], 
        [
          "Voice/Video", 
          "4480"
        ], 
        [
          "Unknown", 
          "126696"
        ], 
        [
          "Web", 
          "2649072"
        ]
      ], 
      "t": 1195590481719742000, 
      "value_sum": 2784448
    }, 
    {
      "value_count": 6, 
      "p": 416, 
      "vals": [
        [
          "ICMP", 
          "480"
        ], 
        [
          "ARP", 
          "1184"
        ], 
        [
          "IM", 
          "2552"
        ], 
        [
          "Voice/Video", 
          "4480"
        ], 
        [
          "Unknown", 
          "111424"
        ], 
        [
          "Web", 
          "2685024"
        ]
      ], 
      "t": 1195590482719742000, 
      "value_sum": 2805144
    }, 
    {
      "value_count": 4, 
      "p": 390, 
      "vals": [
        [
          "ARP", 
          "2000"
        ], 
        [
          "IM", 
          "7808"
        ], 
        [
          "Unknown", 
          "115392"
        ], 
        [
          "Web", 
          "2633664"
        ]
      ], 
      "t": 1195590483719742000, 
      "value_sum": 2758864
    }
  ]
}
Property Name Type Description Notes
samples <object> View output
samples.samples <array of <object>> Samples list
samples.samples[sample] <object> Sample for a view output
samples.samples[sample].gap_start <timestamp-hp> Timestamp at the start of a data gap, representing a period of time in which there are no output values for the view If present, then the vals list will be empty. In XML, a gap is encoded as <gap t1="start" t2="end"/>.
samples.samples[sample].value_sum <number> Sum of all the values for the sorting column Optional
samples.samples[sample].value_count <number> Number of distinct rows Optional; Present only when the output is aggregated
samples.samples[sample].p <number> Processed packet count Optional
samples.samples[sample].u <number> Unprocessed packet count Optional
samples.samples[sample].t <timestamp-hp> Sample timestamp
samples.samples[sample].vals <array of <array of <string>>> Values list In XML, the values list is encoded as <val x0="val0" x1="val1" .../>, where x0..xN correspond to the columns defined in the view configuraton
samples.samples[sample].vals[val] <array of <string>> Value
samples.samples[sample].vals[val][val] <string>
samples.samples[sample].gap_end <timestamp-hp> Timestamp at the end of a data gap, representing a period of time in which there are no output values for the view If present, then the vals list will be empty. In XML, a gap is encoded as <gap t1="start" t2="end"/>.

views: Delete view

Delete view {view_id}. This will stop any packet processing and delete the view results.

DELETE https://{device}/api/shark/5.1/views/{view_id}
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

ping: Ping (POST)

Test availability of POST method.

POST https://{device}/api/shark/5.1/ping
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

ping: Ping (PUT)

Test availability of PUT method.

PUT https://{device}/api/shark/5.1/ping
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

ping: Ping (DELETE)

Test availability of DELETE method.

DELETE https://{device}/api/shark/5.1/ping
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

ping: Ping (GET)

Generic ping response.

GET https://{device}/api/shark/5.1/ping
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
}
Property Name Type Description Notes
ping <object>

system: Upload system update iso

Upload a new ISO file for system update

POST https://{device}/api/shark/5.1/system/update/iso
Authorization

This request requires authorization.

HTTP Headers
Property Name Type Description Notes
Content-Type <string> Content type Must be 'multipart/form-data'
Content-Disposition <string> Name of the file Must be of the form Content-Disposition: form-data; name="iso-file"; filename="[FILENAME]"
Request Body

Provide a request body containing the update ISO file with content type multipart/form-data.

Response Body

On success, the server does not provide any body in the responses.

system: Reinitialize storage system

Request reinitialization of storage subsystem.

POST https://{device}/api/shark/5.1/system/storage/reinitialize
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

system: Get version info

Get version information

GET https://{device}/api/shark/5.1/system/version_info
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "packet_recorder_version": string,
  "shark_version": string,
  "turbocap_api_version": string,
  "serial_number": string,
  "shark_probe_version": string,
  "turbocap_driver_version": string,
  "protocol_version": string
}

Example:
{
  "packet_recorder_version": "1.8.1005.0136", 
  "protocol_version": "4.0", 
  "shark_version": "10.0 (10.0.1005.0136)", 
  "turbocap_api_version": "1.8.1005.0136", 
  "shark_probe_version": "10.0.1000.0000", 
  "turbocap_driver_version": "driver not loaded", 
  "serial_number": "N/A"
}
Property Name Type Description Notes
version_info <object>
version_info.packet_recorder_version <string> Version of the packet recorder component
version_info.shark_version <string> User-friendly version of the system
version_info.turbocap_api_version <string> Version of the turbocap api component
version_info.serial_number <string> Serial number of the system
version_info.shark_probe_version <string> Version of the embedded server component
version_info.turbocap_driver_version <string> Version of the turbocap driver component
version_info.protocol_version <string> Highest API version supported by the system

system: Get system info

Get detailed system information

GET https://{device}/api/shark/5.1/system/info
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "webui_root_path": string,
  "uptime": number,
  "build_variant": string,
  "system_type": string,
  "start_time": timestamp-hp,
  "hostname": string,
  "has_webui": boolean,
  "build_time": string,
  "embedded_wireshark": boolean,
  "webui_port": number,
  "internal_version": string,
  "version": string,
  "view_version": string,
  "timezone": string,
  "default_user_directory": string,
  "protocol_version": string,
  "build_type": string,
  "webui_SSL": boolean,
  "local_time": timestamp-hp
}

Example:
{
  "webui_port": 443, 
  "uptime": 40382739000, 
  "build_variant": "TurboCap", 
  "start_time": 1354579018824095000, 
  "hostname": "shark.localdomain", 
  "has_webui": true, 
  "build_time": "Dec  3 2012 15:33:46", 
  "webui_root_path": "/", 
  "view_version": "3.5", 
  "internal_version": "10.0.1000.0000", 
  "version": "10.0", 
  "system_type": "Linux", 
  "protocol_version": "4.0", 
  "timezone": "-0800", 
  "build_type": "Debug", 
  "webui_SSL": true, 
  "local_time": 1354579059206834000
}
Property Name Type Description Notes
system_info <object> Information about this Shark
system_info.webui_root_path <string> (If web UI is enabled) Root path for web UI resources Optional
system_info.uptime <number> Elapsed time (in nanoseconds) since this Shark was started
system_info.build_variant <string> Variant of Shark build
system_info.system_type <string> Operating system on which this Shark is running
system_info.start_time <timestamp-hp> Time at which this Shark started
system_info.hostname <string> Host name of this Shark
system_info.has_webui <boolean> 'true' if the web UI is enabled for this build
system_info.build_time <string> Date and time at which this Shark was built
system_info.embedded_wireshark <boolean> 'true' if Wireshark is embedded with this Shark Optional
system_info.webui_port <number> (If web UI is enabled) Port on which web UI can be accessed Optional
system_info.internal_version <string> Current long-form version of Shark software
system_info.version <string> Current version of Shark software
system_info.view_version <string> Current version of Shark views
system_info.timezone <string> UTC offset for this Shark
system_info.default_user_directory <string> Default directory for user files Optional
system_info.protocol_version <string> Current version of Shark REST API
system_info.build_type <string> Type of Shark build ('Final' for production, 'Debug' for testing)
system_info.webui_SSL <boolean> (If web UI is enabled) 'true' if web UI uses SSL for transport Optional
system_info.local_time <timestamp-hp> Current system time

system: Fetch system update iso

Request fetch of update ISO from a URL

POST https://{device}/api/shark/5.1/system/update/url
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "url": string
}

Example:
{
  "url": "http://myserver.com/isos/my.iso"
}
Property Name Type Description Notes
update_fetch <object>
update_fetch.url <string> URL of ISO to be used for update
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "shark_user_version": string,
  "comment": string,
  "need_reboot": boolean,
  "executing_job_description": string,
  "iso_name": string,
  "shark_version": string,
  "update_to": string,
  "iso_size": number,
  "state": string,
  "iso_sha_hash": string,
  "update_to_internal": string,
  "init_id": string,
  "estimate": number,
  "pre_start_message": string
}

Example:
{
  "shark_user_version": "yyyy", 
  "iso_name": "my_iso_12345.iso", 
  "shark_version": "xxxx", 
  "iso_size": 4564564, 
  "state": "RUNNING", 
  "init_id": "abc123", 
  "estimate": 30
}
Property Name Type Description Notes
update <object>
update.shark_user_version <string> Currently running system version (user string)
update.comment <string> Message from update subsystem Optional; In case of a 'FAILED_GRACEFUL' or 'FAILED_CRITICAL', provides a reason for failure
update.need_reboot <boolean> 'true' if a the update requires a reboot Optional
update.executing_job_description <string> Description of update task currently under way Optional
update.iso_name <string> File name of the uploaded ISO file Optional
update.shark_version <string> Currently running system version
update.update_to <string> Version to which update will be carried out Optional
update.iso_size <number> Size (in bytes) of the uploaded ISO file Optional
update.state <string> Current state of the update Values: NEUTRAL, INITIALIZING, INITIALIZED, RUNNING, FAILED_GRACEFUL, FAILED_CRITICAL, UNKNOWN
update.iso_sha_hash <string> SHA256 hash of the uploaded ISO file Optional
update.update_to_internal <string> Internal version string to which update will be carried out Optional
update.init_id <string> When status is 'INITIALIZED', the ID to be provided when starting the update (i.e. to request a state change to 'RUNNING') Optional
update.estimate <number> Estimated time to complete update Seconds
update.pre_start_message <string> Message from update subsystem to be displayed before starting update Optional

system: Modify system update state

Update state of system update

PUT https://{device}/api/shark/5.1/system/update/state
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "reset": boolean,
  "init_id": string,
  "state": string
}

Example:
{
  "reset": true, 
  "state": "INITIALIZED"
}
Property Name Type Description Notes
update_state <object> Request change in update state value on server
update_state.reset <boolean> If 'true', uninitializes update Optional; Only applies when requesting 'NEUTRAL' state.
update_state.init_id <string> Update ID provided by the update subsystem from the most recent status request Optional; Only valid when the requested state is 'RUNNING'. Ignored in all other requested states.
update_state.state <string> Requested new state of update subsystem Values: NEUTRAL, INITIALIZING, INITIALIZED, RUNNING, FAILED_GRACEFUL, FAILED_CRITICAL, UNKNOWN
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "shark_user_version": string,
  "comment": string,
  "need_reboot": boolean,
  "executing_job_description": string,
  "iso_name": string,
  "shark_version": string,
  "update_to": string,
  "iso_size": number,
  "state": string,
  "iso_sha_hash": string,
  "update_to_internal": string,
  "init_id": string,
  "estimate": number,
  "pre_start_message": string
}

Example:
{
  "shark_user_version": "yyyy", 
  "iso_name": "my_iso_12345.iso", 
  "shark_version": "xxxx", 
  "iso_size": 4564564, 
  "state": "RUNNING", 
  "init_id": "abc123", 
  "estimate": 30
}
Property Name Type Description Notes
update <object>
update.shark_user_version <string> Currently running system version (user string)
update.comment <string> Message from update subsystem Optional; In case of a 'FAILED_GRACEFUL' or 'FAILED_CRITICAL', provides a reason for failure
update.need_reboot <boolean> 'true' if a the update requires a reboot Optional
update.executing_job_description <string> Description of update task currently under way Optional
update.iso_name <string> File name of the uploaded ISO file Optional
update.shark_version <string> Currently running system version
update.update_to <string> Version to which update will be carried out Optional
update.iso_size <number> Size (in bytes) of the uploaded ISO file Optional
update.state <string> Current state of the update Values: NEUTRAL, INITIALIZING, INITIALIZED, RUNNING, FAILED_GRACEFUL, FAILED_CRITICAL, UNKNOWN
update.iso_sha_hash <string> SHA256 hash of the uploaded ISO file Optional
update.update_to_internal <string> Internal version string to which update will be carried out Optional
update.init_id <string> When status is 'INITIALIZED', the ID to be provided when starting the update (i.e. to request a state change to 'RUNNING') Optional
update.estimate <number> Estimated time to complete update Seconds
update.pre_start_message <string> Message from update subsystem to be displayed before starting update Optional

system: Restart system

Restart the shark service or reboot the system.

POST https://{device}/api/shark/5.1/system/restart
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "type": string
}

Example:
{
  "type": "PROBE"
}
Property Name Type Description Notes
restart <object> Configuration to restart
restart.type <string> Type of service to restart Values: SHARK, PROBE, PACKETRECORDER
Response Body

On success, the server does not provide any body in the responses.

system: Format storage system

Request packet storage reformat.

POST https://{device}/api/shark/5.1/system/format_storage
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "reserved_space": number
}

Example:
{
  "reserved_space": 10
}
Property Name Type Description Notes
format_storage <object> Configuration information to format the packet storage
format_storage.reserved_space <number> Percentage of unused space at the end of the packet storage
Response Body

On success, the server does not provide any body in the responses.

system: Get audit log

Get the audit log as a text file. Response content type is 'text/plain'.

GET https://{device}/api/shark/5.1/system/audit_log
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

system: Generate system dump

GET https://{device}/api/shark/5.1/system/sysdump?dump_type={string}&case_id={string}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
dump_type <string> 'CURRENT': Includes current Shark Probe and Shark Packet Recorder logs; 'PROBE': Includes all Shark Probe logs; 'PACKETRECORDER': Includes all Shark Packet Recorder logs; 'COMPLETE': Includes all Shark Probe and Shark Packet Recorder logs. Optional
case_id <string> Optional case ID to be attached to output file name. Optional
Response Body

On success, the server does not provide any body in the responses.

system: Get system update status

Get current system update status

GET https://{device}/api/shark/5.1/system/update
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "shark_user_version": string,
  "comment": string,
  "need_reboot": boolean,
  "executing_job_description": string,
  "iso_name": string,
  "shark_version": string,
  "update_to": string,
  "iso_size": number,
  "state": string,
  "iso_sha_hash": string,
  "update_to_internal": string,
  "init_id": string,
  "estimate": number,
  "pre_start_message": string
}

Example:
{
  "shark_user_version": "yyyy", 
  "iso_name": "my_iso_12345.iso", 
  "shark_version": "xxxx", 
  "iso_size": 4564564, 
  "state": "RUNNING", 
  "init_id": "abc123", 
  "estimate": 30
}
Property Name Type Description Notes
update <object>
update.shark_user_version <string> Currently running system version (user string)
update.comment <string> Message from update subsystem Optional; In case of a 'FAILED_GRACEFUL' or 'FAILED_CRITICAL', provides a reason for failure
update.need_reboot <boolean> 'true' if a the update requires a reboot Optional
update.executing_job_description <string> Description of update task currently under way Optional
update.iso_name <string> File name of the uploaded ISO file Optional
update.shark_version <string> Currently running system version
update.update_to <string> Version to which update will be carried out Optional
update.iso_size <number> Size (in bytes) of the uploaded ISO file Optional
update.state <string> Current state of the update Values: NEUTRAL, INITIALIZING, INITIALIZED, RUNNING, FAILED_GRACEFUL, FAILED_CRITICAL, UNKNOWN
update.iso_sha_hash <string> SHA256 hash of the uploaded ISO file Optional
update.update_to_internal <string> Internal version string to which update will be carried out Optional
update.init_id <string> When status is 'INITIALIZED', the ID to be provided when starting the update (i.e. to request a state change to 'RUNNING') Optional
update.estimate <number> Estimated time to complete update Seconds
update.pre_start_message <string> Message from update subsystem to be displayed before starting update Optional

system: Shutdown system

Shut down the system.

POST https://{device}/api/shark/5.1/system/shutdown
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

system: Get system storage info

Get storage monitor status

GET https://{device}/api/shark/5.1/system/storage
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "total_space": number,
  "disks": [
    {
      "expected_serial": string,
      "label": string,
      "state_type": string,
      "state": string,
      "row_id": string,
      "column_id": string,
      "model": string,
      "serial": string
    }
  ],
  "allocated_space": number,
  "used_space": number,
  "state_type": string,
  "state": string,
  "available_space": number,
  "can_reinitialize": boolean
}

Example:
{
  "total_space": 42815455232, 
  "disks": [
    {
      "column_id": "0", 
      "state_type": "OK", 
      "state": "OK", 
      "model": "N/A", 
      "label": "N/A", 
      "row_id": "0", 
      "serial": "N/A"
    }
  ], 
  "allocated_space": 11811160064, 
  "used_space": 11676942336, 
  "state_type": "OK", 
  "state": "OK", 
  "available_space": 31138512896, 
  "can_reinitialize": true
}
Property Name Type Description Notes
storage <object>
storage.total_space <number> Total space in the storage system Optional
storage.disks <array of <object>> List of disks in the storage system Optional
storage.disks[disk] <object> Storage system disk information
storage.disks[disk].expected_serial <string> Expected serial number of the disk Optional
storage.disks[disk].label <string> Label of the disk
storage.disks[disk].state_type <string> State code of the disk Values: OK, WARNING, ERROR
storage.disks[disk].state <string> State description of the disk
storage.disks[disk].row_id <string> Row number for the disk
storage.disks[disk].column_id <string> Column number for the disk
storage.disks[disk].model <string> Model of the disk
storage.disks[disk].serial <string> Serial number of the disk
storage.allocated_space <number> Allocated space in the storage system Optional
storage.used_space <number> Used space in the storage system Optional
storage.state_type <string> State code of the storage system Values: OK, WARNING, ERROR
storage.state <string> State description of the storage system
storage.available_space <number> Available space in the storage system Optional
storage.can_reinitialize <boolean> Whether or not the storage system can be reinitialized Optional

watches: Enable watch

Enable watch {watch_id} on view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/watches/{watch_id}/enable
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

watches: Create watch

Create a new watch for view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/watches
Authorization

This request requires authorization.

Request Body

Provide a watch data object.

Response Body

On success, the server does not provide any body in the responses.

watches: List watches

Get the list of watches for view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/watches
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ watch ]

Example:
[
  {
    "info": {
      "name": "Watch 1"
    }, 
    "severity": 6, 
    "triggers": [
      {
        "condition_operator": "AND", 
        "conditions": [
          {
            "field": "c2", 
            "condition_info": {
              "aggregation_type": "VALUE", 
              "value": "0", 
              "check_type": "GREATER"
            }
          }
        ], 
        "bool_operator": "OR", 
        "dimension_restrictions": {
          "sub_restrictions": [], 
          "restrictions": [
            {
              "field": "c1", 
              "value": "Web"
            }
          ], 
          "bool_operator": "OR"
        }, 
        "uid": "Trigger 1"
      }
    ], 
    "watch_uid": "watch_1", 
    "enabled": true, 
    "actions": {
      "fired_triggers": {
        "bool_operator": "AND", 
        "triggering_mode": "LEADINGEDGE", 
        "triggers": [
          "Trigger 1"
        ]
      }, 
      "actions": [
        {
          "type": "InternalDBLog", 
          "uid": "Action 1", 
          "parameters": [], 
          "side": "SERVER"
        }
      ]
    }, 
    "timing": {
      "from": "NOW", 
      "time_analysis_mode": "SAMPLE_BY_SAMPLE", 
      "interval_ms": 1000
    }, 
    "output_uid": "OUID_Output_Over_Time"
  }
]
Property Name Type Description Notes
watches <array of <watch>> Watch list
watches[watch] <watch> Instance of a <watch>

watches: Disable watch

Disable watch {watch_id} on view {view_id}.

POST https://{device}/api/shark/5.1/views/{view_id}/watches/{watch_id}/disable
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

watches: Delete watch

Delete watch {watch_id} on view {view_id}.

DELETE https://{device}/api/shark/5.1/views/{view_id}/watches/{watch_id}
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

watches: Update watch

Update configuration for watch {watch_id} on view {view_id}.

PUT https://{device}/api/shark/5.1/views/{view_id}/watches/{watch_id}
Authorization

This request requires authorization.

Request Body

Provide a watch data object.

Response Body

On success, the server does not provide any body in the responses.

watches: Get watch detail

Config information for watch {watch_id} on view {view_id}.

GET https://{device}/api/shark/5.1/views/{view_id}/watches/{watch_id}
Authorization

This request requires authorization.

Response Body

Returns a watch data object.

clips: Get clip index info

Index info for clip {clip_id}

GET https://{device}/api/shark/5.1/clips/{clip_id}/index
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Response Body

Returns an index_info data object.

clips: Get clip detail

Info on clip {clip_id}

GET https://{device}/api/shark/5.1/clips/{clip_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "status": clip_status,
  "index": index_info,
  "config": clip_config,
  "id": string
}

Example:
{
  "status": {
    "estimated_size": 268435456, 
    "modification_time": 1345830535, 
    "creation_time": 1345830425, 
    "locked": true
  }, 
  "index": {
    "status": "OK", 
    "start_time": 1345830425000000000, 
    "end_time": 1345830435000000000
  }, 
  "config": {
    "job_id": "000000A3", 
    "filters": [
      {
        "type": "TIME", 
        "description": "This is a time filter.", 
        "value": "1345830425000000000, 1345830435000000000"
      }, 
      {
        "type": "BPF", 
        "value": "port 80"
      }
    ], 
    "description": "This is a clip on job 000000A3"
  }, 
  "id": "000000A30002"
}
Property Name Type Description Notes
clip <object> Description and status of trace clip
clip.status <clip_status> Status information for this clip
clip.index <index_info> Index information for this clip
clip.config <clip_config> Configuration information for this clip
clip.id <string> Clip id

clips: Create clip

Create a new trace clip

POST https://{device}/api/shark/5.1/clips
Authorization

This request requires authorization.

Request Body

Provide a clip_config data object.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "id": string
}

Example:
{
  "id": "000000A30002"
}
Property Name Type Description Notes
clip <object>
clip.id <string> Identifier of the newly created clip

clips: Get clip status

Status info for clip {clip_id}

GET https://{device}/api/shark/5.1/clips/{clip_id}/status
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Response Body

Returns a clip_status data object.

clips: Get clip config

Config info for clip {clip_id}

GET https://{device}/api/shark/5.1/clips/{clip_id}/config
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Response Body

Returns a clip_config data object.

clips: List clips

Get the list of trace clips

GET https://{device}/api/shark/5.1/clips
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "status": clip_status,
    "index": index_info,
    "config": clip_config,
    "id": string
  }
]

Example:
[
  {
    "status": {
      "estimated_size": 268435456, 
      "modification_time": 1345830535, 
      "creation_time": 1345830425, 
      "locked": true
    }, 
    "index": {
      "status": "OK", 
      "start_time": 1345830425000000000, 
      "end_time": 1345830435000000000
    }, 
    "config": {
      "job_id": "000000A3", 
      "filters": [
        {
          "type": "TIME", 
          "description": "This is a time filter.", 
          "value": "1345830425000000000, 1345830435000000000"
        }, 
        {
          "type": "BPF", 
          "value": "port 80"
        }
      ], 
      "description": "This is a clip on job 000000A3"
    }, 
    "id": "000000A30002"
  }, 
  {
    "status": {
      "estimated_size": 268435456, 
      "modification_time": 1345830563, 
      "creation_time": 1345830563, 
      "locked": true
    }, 
    "config": {
      "job_id": "000000A3", 
      "filters": [
        {
          "type": "TIME", 
          "description": "This is a time filter.", 
          "value": "1345830493000000000, 1345830596000000000"
        }, 
        {
          "type": "SHARK", 
          "description": "This is a shark filter.", 
          "value": "tcp.port=\"80\""
        }
      ], 
      "description": "This is the third clip on job 000000A3"
    }, 
    "id": "000000A30003"
  }
]
Property Name Type Description Notes
clips <array of <object>> List of clips
clips[clip] <object> Description and status of trace clip
clips[clip].status <clip_status> Status information for this clip
clips[clip].index <index_info> Index information for this clip
clips[clip].config <clip_config> Configuration information for this clip
clips[clip].id <string> Clip id

clips: Update clip lock status

Update lock status for clip {clip_id}

PUT https://{device}/api/shark/5.1/clips/{clip_id}/status
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Request Body

Provide a request body with the following structure:

  • JSON
{
  "locked": boolean
}

Example:
{
  "locked": true
}
Property Name Type Description Notes
status <object>
status.locked <boolean> 'true' to lock the packets and the index for this clip, 'false' otherwise
Response Body

On success, the server does not provide any body in the responses.

clips: Update clip

Update config info for clip {clip_id}

PUT https://{device}/api/shark/5.1/clips/{clip_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Request Body

Provide a clip_config data object.

Response Body

On success, the server does not provide any body in the responses.

clips: Delete clip

Delete clip {clip_id}

DELETE https://{device}/api/shark/5.1/clips/{clip_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
clip_id <string> Clip identifier
Response Body

On success, the server does not provide any body in the responses.

certificates: Update web UI certificate

Upload a new web UI certificate.

PUT https://{device}/api/shark/5.1/settings/certificates/web
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "pem": string
}

Example:
{
  "pem": "-----BEGIN PRIVATE KEY-----\nMIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDB+tJ7fYFr0PiP\nfNwsQLEnRZOyk27iBHagszfdFC83nCINKAbWZqfhHMKVoTiSqxuul0ZE1Kqwh9hG\nNj6ZH9PU2V3bAd6ZOglGozawpAj33Vz0SmuqIsalrp09p9LKbeYLHmWumrY0Elzu\nk96Z+R7JZZeW141J09nAlndWzNsu2F/RMAla94ekJSnbPmApGaRBwO29cLwd8Zy2\nsZXJQs8cxHcAXNknicvyC4j8Cxl7LuevH2nuYAuq9rQFbKIcOF2/UtW25dQCTXE4\n+OBQrH2eup4VUqlwDwL+XelH9gO2wE+fypv4pw2H1HbsH+FqTzdvPq8UNNA3WhyP\nRmqZBQmNAgMBAAECggEBAMF5QHJ3DZzRwviqmpdwtsDqvpPARTodJYzG9BMHTMj0\na2of4CH8Jbl7jADd2qU/EM8khqukSdLkyyvMcscbXZbQbrI/vRurLRFNPQEVuvQt\nz8bAa344TVV3QdH7D11kG6w/Vz+9g7mQDyzOQ5njRXeuYnHK8FsQeAGEkeb7UCn5\nWenIzuF5pL21ZPA2Yt3JEi+ntPQdQPEPBDVHBnbkrZ0cQQhuE1t4BwUBu6Yv2kkx\nNTzleB+9tUVXk7LUHyuvuQ9jeZCHQSLNAeP1mvrGK77OVTZDphN/rLc7Tt7IWSZm\ngD0OXgot0tEoBoe1jGpWGXEjeHS0X+Br9Y1EpBrpCoECgYEA/ZLtRZTw4wpqriFs\n2t/mwfKWdnM/O4DbKzN/T1aIv3e6qAqq6DfJg1JEiI7YlFnJTepeR8NGCSnifxTG\nv3TRylOpSqfTuFT9oKWRaIrNZed8OPY2c2VlyU5vF10E/m/V0WrHjnogOSBeCf32\nh4+m4QAnXkrvU4uXw9pAgTKeZxECgYEAw9Xuw1NyB7Iuli3HM1qeg8+v601pbrLg\n9LoJdZofFDhJuUKZ5y+7YuIuWGWyCVYlIod3umb78YbBILrSUimkK5OXhiPNDihH\nVD/ggTXCPgm3FT941zaKnSUSlZDF7LndLLlYUwYnB8qba8+vCIDAHnKsyHKPEvTC\n/SkAvJcX0r0CgYEA9gxjf2kOdL/e1ChK3/byiq9BoJ4jdTGLeVf26J0nA+LBk90G\nCV5YgryJE5jIPusAkkIgSbIJe0rRJE6cq5pHFvQnCPHgVrThhcgiWDaXJ5J+zybZ\nnw98vOEGmrz/44PRDet2x6FpMwVdOoTbep7BZwInMS+1GnQRR1G31aWwXoECgYEA\nmtsdTYk7n0hPvGOApGQg+pwNQOTa3TVH210Mw9jWgJet/Hfk2UIOTDgMa8wmx2k+\nPhqfG1/6E9f5+ZahX2UcM3UnGWRP7sT8+mr0bVgEPChUhNHHDW9MlszM8EYlrHag\npY/+ftBbpraYxdzZTMD6qlkFtg+YgWXYlnWI5pgXt4UCgYEAppqACeoUd+UI3Azs\n2B/KWndzdBMgMNFZsZvcMC1sfZjsCrbcOZDkU+cYUDxfM2Wp5ihk7CVH8XUx+ue+\nm92OX497PvXihxdSNrlsi3GJuhq5uaYpZWPn3269zC2wDlAwUX78X3NYMsoxg8XO\nFihyaSY3EzACFI96nbDOIeS5csg=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDyTCCArGgAwIBAgIRAMjqZzJo2/e4lqogFGp6IcswDQYJKoZIhvcNAQENBQAw\nZDESMBAGA1UEAxMJV1BJUkFTLVc3MRwwGgYDVQQKExNSaXZlcmJlZCBUZWNobm9s\nb2d5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMQswCQYDVQQIEwJDQTELMAkGA1UE\nBhMCVVMwHhcNMTIwOTI2MjEzMzAxWhcNMTMwOTI2MjEzMzAxWjBkMRIwEAYDVQQD\nEwlXUElSQVMtVzcxHDAaBgNVBAoTE1JpdmVyYmVkIFRlY2hub2xvZ3kxFjAUBgNV\nBAcTDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMH60nt9gWvQ+I983CxAsSdFk7KT\nbuIEdqCzN90ULzecIg0oBtZmp+EcwpWhOJKrG66XRkTUqrCH2EY2Ppkf09TZXdsB\n3pk6CUajNrCkCPfdXPRKa6oixqWunT2n0spt5gseZa6atjQSXO6T3pn5Hslll5bX\njUnT2cCWd1bM2y7YX9EwCVr3h6QlKds+YCkZpEHA7b1wvB3xnLaxlclCzxzEdwBc\n2SeJy/ILiPwLGXsu568fae5gC6r2tAVsohw4Xb9S1bbl1AJNcTj44FCsfZ66nhVS\nqXAPAv5d6Uf2A7bAT5/Km/inDYfUduwf4WpPN28+rxQ00DdaHI9GapkFCY0CAwEA\nAaN2MHQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE\nFBM4OhBjBV4Btfh5hNw9N3G4G10RMB8GA1UdIwQYMBaAFBM4OhBjBV4Btfh5hNw9\nN3G4G10RMBEGCWCGSAGG+EIBAQQEAwICBDANBgkqhkiG9w0BAQ0FAAOCAQEASY+U\nsTWf8Rhx6PoTE4y8bcWA3TItsseHAWicKwJgEQQ5xzmzr+Jfj46ToQVSUcyLvWgT\njUTuNRrUbFXTk23zkICRZQHWaBgA2jV2GDY1wyP8EsrCxLVW6YTWIzh3uGBa0b4H\n+eWt0V+FkRy7uzBg5PQEZl910gt48pULu4qG4NjYuiZV5+aujsjUHK4w4CWixIDi\npDmixAlzUpoE3yedQ+yzXlRDjQcwanxRR68GBPkH/1MZpLs+xJoC0IomUEgr9Ilj\n5aKOm0uacalQq4wGNODKGdApiZeMpKgQ7OzBxvCWsGu2qoduNNDDzdT2jTyciu6J\nwXX+DIergacItTw7bA==\n-----END CERTIFICATE-----"
}
Property Name Type Description Notes
certificate <object> Validity days for the new self signed certificate
certificate.pem <string> Contains the certificate in PEM format encode with Base64. This field contains both the public and private part of the new certificate.
Response Body

On success, the server does not provide any body in the responses.

certificates: Update profiler export certificate

Upload a new profiler export certificate.

PUT https://{device}/api/shark/5.1/settings/certificates/profiler_export
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "pem": string
}

Example:
{
  "pem": "-----BEGIN PRIVATE KEY-----\nMIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDB+tJ7fYFr0PiP\nfNwsQLEnRZOyk27iBHagszfdFC83nCINKAbWZqfhHMKVoTiSqxuul0ZE1Kqwh9hG\nNj6ZH9PU2V3bAd6ZOglGozawpAj33Vz0SmuqIsalrp09p9LKbeYLHmWumrY0Elzu\nk96Z+R7JZZeW141J09nAlndWzNsu2F/RMAla94ekJSnbPmApGaRBwO29cLwd8Zy2\nsZXJQs8cxHcAXNknicvyC4j8Cxl7LuevH2nuYAuq9rQFbKIcOF2/UtW25dQCTXE4\n+OBQrH2eup4VUqlwDwL+XelH9gO2wE+fypv4pw2H1HbsH+FqTzdvPq8UNNA3WhyP\nRmqZBQmNAgMBAAECggEBAMF5QHJ3DZzRwviqmpdwtsDqvpPARTodJYzG9BMHTMj0\na2of4CH8Jbl7jADd2qU/EM8khqukSdLkyyvMcscbXZbQbrI/vRurLRFNPQEVuvQt\nz8bAa344TVV3QdH7D11kG6w/Vz+9g7mQDyzOQ5njRXeuYnHK8FsQeAGEkeb7UCn5\nWenIzuF5pL21ZPA2Yt3JEi+ntPQdQPEPBDVHBnbkrZ0cQQhuE1t4BwUBu6Yv2kkx\nNTzleB+9tUVXk7LUHyuvuQ9jeZCHQSLNAeP1mvrGK77OVTZDphN/rLc7Tt7IWSZm\ngD0OXgot0tEoBoe1jGpWGXEjeHS0X+Br9Y1EpBrpCoECgYEA/ZLtRZTw4wpqriFs\n2t/mwfKWdnM/O4DbKzN/T1aIv3e6qAqq6DfJg1JEiI7YlFnJTepeR8NGCSnifxTG\nv3TRylOpSqfTuFT9oKWRaIrNZed8OPY2c2VlyU5vF10E/m/V0WrHjnogOSBeCf32\nh4+m4QAnXkrvU4uXw9pAgTKeZxECgYEAw9Xuw1NyB7Iuli3HM1qeg8+v601pbrLg\n9LoJdZofFDhJuUKZ5y+7YuIuWGWyCVYlIod3umb78YbBILrSUimkK5OXhiPNDihH\nVD/ggTXCPgm3FT941zaKnSUSlZDF7LndLLlYUwYnB8qba8+vCIDAHnKsyHKPEvTC\n/SkAvJcX0r0CgYEA9gxjf2kOdL/e1ChK3/byiq9BoJ4jdTGLeVf26J0nA+LBk90G\nCV5YgryJE5jIPusAkkIgSbIJe0rRJE6cq5pHFvQnCPHgVrThhcgiWDaXJ5J+zybZ\nnw98vOEGmrz/44PRDet2x6FpMwVdOoTbep7BZwInMS+1GnQRR1G31aWwXoECgYEA\nmtsdTYk7n0hPvGOApGQg+pwNQOTa3TVH210Mw9jWgJet/Hfk2UIOTDgMa8wmx2k+\nPhqfG1/6E9f5+ZahX2UcM3UnGWRP7sT8+mr0bVgEPChUhNHHDW9MlszM8EYlrHag\npY/+ftBbpraYxdzZTMD6qlkFtg+YgWXYlnWI5pgXt4UCgYEAppqACeoUd+UI3Azs\n2B/KWndzdBMgMNFZsZvcMC1sfZjsCrbcOZDkU+cYUDxfM2Wp5ihk7CVH8XUx+ue+\nm92OX497PvXihxdSNrlsi3GJuhq5uaYpZWPn3269zC2wDlAwUX78X3NYMsoxg8XO\nFihyaSY3EzACFI96nbDOIeS5csg=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDyTCCArGgAwIBAgIRAMjqZzJo2/e4lqogFGp6IcswDQYJKoZIhvcNAQENBQAw\nZDESMBAGA1UEAxMJV1BJUkFTLVc3MRwwGgYDVQQKExNSaXZlcmJlZCBUZWNobm9s\nb2d5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMQswCQYDVQQIEwJDQTELMAkGA1UE\nBhMCVVMwHhcNMTIwOTI2MjEzMzAxWhcNMTMwOTI2MjEzMzAxWjBkMRIwEAYDVQQD\nEwlXUElSQVMtVzcxHDAaBgNVBAoTE1JpdmVyYmVkIFRlY2hub2xvZ3kxFjAUBgNV\nBAcTDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMH60nt9gWvQ+I983CxAsSdFk7KT\nbuIEdqCzN90ULzecIg0oBtZmp+EcwpWhOJKrG66XRkTUqrCH2EY2Ppkf09TZXdsB\n3pk6CUajNrCkCPfdXPRKa6oixqWunT2n0spt5gseZa6atjQSXO6T3pn5Hslll5bX\njUnT2cCWd1bM2y7YX9EwCVr3h6QlKds+YCkZpEHA7b1wvB3xnLaxlclCzxzEdwBc\n2SeJy/ILiPwLGXsu568fae5gC6r2tAVsohw4Xb9S1bbl1AJNcTj44FCsfZ66nhVS\nqXAPAv5d6Uf2A7bAT5/Km/inDYfUduwf4WpPN28+rxQ00DdaHI9GapkFCY0CAwEA\nAaN2MHQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE\nFBM4OhBjBV4Btfh5hNw9N3G4G10RMB8GA1UdIwQYMBaAFBM4OhBjBV4Btfh5hNw9\nN3G4G10RMBEGCWCGSAGG+EIBAQQEAwICBDANBgkqhkiG9w0BAQ0FAAOCAQEASY+U\nsTWf8Rhx6PoTE4y8bcWA3TItsseHAWicKwJgEQQ5xzmzr+Jfj46ToQVSUcyLvWgT\njUTuNRrUbFXTk23zkICRZQHWaBgA2jV2GDY1wyP8EsrCxLVW6YTWIzh3uGBa0b4H\n+eWt0V+FkRy7uzBg5PQEZl910gt48pULu4qG4NjYuiZV5+aujsjUHK4w4CWixIDi\npDmixAlzUpoE3yedQ+yzXlRDjQcwanxRR68GBPkH/1MZpLs+xJoC0IomUEgr9Ilj\n5aKOm0uacalQq4wGNODKGdApiZeMpKgQ7OzBxvCWsGu2qoduNNDDzdT2jTyciu6J\nwXX+DIergacItTw7bA==\n-----END CERTIFICATE-----"
}
Property Name Type Description Notes
certificate <object> Validity days for the new self signed certificate
certificate.pem <string> Contains the certificate in PEM format encode with Base64. This field contains both the public and private part of the new certificate.
Response Body

On success, the server does not provide any body in the responses.

certificates: Generate web UI certificate

Request generation of new self-signed certificate and private key for the web UI

POST https://{device}/api/shark/5.1/settings/certificates/web/generate
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "issued_to": {
    "locality": string,
    "country": string,
    "organization_unit": string,
    "state": string,
    "organization": string,
    "email": string
  },
  "validity": {
    "days": number
  }
}

Example:
{
  "issued_to": {
    "locality": "San%20Francisco", 
    "country": "US", 
    "organization_unit": "CascadeUnit", 
    "state": "CA", 
    "organization": "Riverbed%20Technology", 
    "email": "admin%40riverbed.com"
  }, 
  "validity": {
    "days": 365
  }
}
Property Name Type Description Notes
certificate_info <object> Contains info used to generate a new self signed certificate (only for Web Server and Profiler Export certificates)
certificate_info.issued_to <object> Contains data to generate a new self-signed certificate
certificate_info.issued_to.locality <string> Subject's locality
certificate_info.issued_to.country <string> Subject's country
certificate_info.issued_to.
organization_unit
<string> Subject's organization unit
certificate_info.issued_to.state <string> Subject's state (2 letters code)
certificate_info.issued_to.organization <string> Subject's organization
certificate_info.issued_to.email <string> Subject's email
certificate_info.validity <object> Validity days for a new self signed certificate
certificate_info.validity.days <number> Validity days for a new self signed certificate
Response Body

On success, the server does not provide any body in the responses.

certificates: Copy profiler export certificate for web UI

Request that profiler export certificate be reused for the web UI.

POST https://{device}/api/shark/5.1/settings/certificates/web/copy_profiler_export
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

certificates: Delete trusted profiler certificate

Delete trusted profiler certificate {certificate_id}.

DELETE https://{device}/api/shark/5.1/settings/certificates/trusted_profilers/{certificate_id}
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

certificates: Upload trusted profiler certificate

Upload a new trusted profiler certificate

POST https://{device}/api/shark/5.1/settings/certificates/trusted_profilers
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "pem": string,
  "id": string
}

Example:
{
  "pem": "-----BEGIN CERTIFICATE-----\nMIIEPTCCAyWgAwIBAgIRAO1ZLvfw3lwCqFen5rQf7ecwDQYJKoZIhvcNAQENBQAw\ngZ0xITAfBgkqhkiG9w0BCQEWEmFkbWluQHJpdmVyYmVkLmNvbTESMBAGA1UEAxMJ\nV1BJUkFTLVc3MRwwGgYDVQQKExNSaXZlcmJlZCBUZWNobm9sb2d5MRQwEgYDVQQL\nEwtDYXNjYWRlVW5pdDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzELMAkGA1UECBMC\nQ0ExCzAJBgNVBAYTAlVTMB4XDTEyMDkyNjIyNTkzNFoXDTEzMDkyNjIyNTkzNFow\ngZ0xITAfBgkqhkiG9w0BCQEWEmFkbWluQHJpdmVyYmVkLmNvbTESMBAGA1UEAxMJ\nV1BJUkFTLVc3MRwwGgYDVQQKExNSaXZlcmJlZCBUZWNobm9sb2d5MRQwEgYDVQQL\nEwtDYXNjYWRlVW5pdDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzELMAkGA1UECBMC\nQ0ExCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nvYsAKrsA1ohMakG+9azPS9cJrgRB8kKaGBJrGLm6LMSCow82vAZH2MrMDsoAHwaj\n8mV+79PM1Rl1tjZmbhMD4SV9HhJQjkwrM6r2WV49MHdMkdeXTWEbLZ8OyBPUPWtn\n8+zy5IWLB8ri/D7RjVe7LFOM389JmOofb9wCHzCT0yKbJO39OHI9AI3LQrnLo7g4\nMXpTQklL18EjVay7RickcnKDDJhIOziXBJCmfr5jrCz76oT07/IbJ3NI5RqB6JSR\nZcPMyZFnzuEwxWfsmatzCuiD8kQBqz+6It0RKYlalylVhFS+2ViA8O5Qs1p8vXb5\n8yohwQfV19n02+DRRV3dRwIDAQABo3YwdDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud\nDwEB/wQEAwIBBjAdBgNVHQ4EFgQUVhms7KFEi/wH1cdj56L5U+XTAeowHwYDVR0j\nBBgwFoAUVhms7KFEi/wH1cdj56L5U+XTAeowEQYJYIZIAYb4QgEBBAQDAgIEMA0G\nCSqGSIb3DQEBDQUAA4IBAQC0C70AFxt+cjAM8I1JbJJJ5RGoSTPfOmvQznr4nW7g\nG/dRUUO3eGpd05YmJlA0TTCunbxdnUTlv7phXgJ5+IeBnhIR1eC7lxgHPwshr4oO\nE4UfyL5iwhs+fCPHhPllo9VVOCcSR4CqjY4i1++14BVKZE0hWX3oZhaG/g1oXDv5\nGdLvOspRYxpgONsJvLeV4OZk1r1oZfHCsOnilIq1KsRzpOt2/M2SNs2oKS89em8D\n84GDI/0fpVbmpfdzj+vyB0UaLXBtKgeno7HzoUY/Vfwvi02n6J0OlHNNJGI+imE5\nun5/WbK6z4fWBuipjlIje3D5o+XSxPuh7wrfQfChMZEK\n-----END CERTIFICATE-----", 
  "id": "riverbed_certificate"
}
Property Name Type Description Notes
trusted_profiler <object> Used to upload a new trusted profiler certificate
trusted_profiler.pem <string> Contains the certificate in PEM format encode with Base64. This field contains only the public part of the certificate.
trusted_profiler.id <string> ID associated with the new Trusted Profiler certificate
Response Body

On success, the server does not provide any body in the responses.

certificates: Copy web UI certificate for profiler export

Request that web UI certificate be reused for profiler export.

POST https://{device}/api/shark/5.1/settings/certificates/profiler_export/copy_web
Authorization

This request requires authorization.

Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

certificates: List certificates

Get the list of certificates

GET https://{device}/api/shark/5.1/settings/certificates
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "web_certificate": {
    "issued_to": {
      "locality": string,
      "country": string,
      "organization_unit": string,
      "state": string,
      "common_name": string,
      "organization": string,
      "email": string
    },
    "issued_by": {
      "locality": string,
      "country": string,
      "organization_unit": string,
      "state": string,
      "common_name": string,
      "organization": string,
      "email": string
    },
    "validity": {
      "issued": timestamp,
      "expire": timestamp
    },
    "pem": string,
    "key": {
      "algorithm": string,
      "size": number
    },
    "fingerprint": number
  },
  "trusted_profilers": [
    {
      "id": string,
      "certificate": {
        "issued_to": {
          "locality": string,
          "country": string,
          "organization_unit": string,
          "state": string,
          "common_name": string,
          "organization": string,
          "email": string
        },
        "issued_by": {
          "locality": string,
          "country": string,
          "organization_unit": string,
          "state": string,
          "common_name": string,
          "organization": string,
          "email": string
        },
        "validity": {
          "issued": timestamp,
          "expire": timestamp
        },
        "pem": string,
        "key": {
          "algorithm": string,
          "size": number
        },
        "fingerprint": number
      }
    }
  ],
  "profiler_export_certificate": {
    "issued_to": {
      "locality": string,
      "country": string,
      "organization_unit": string,
      "state": string,
      "common_name": string,
      "organization": string,
      "email": string
    },
    "issued_by": {
      "locality": string,
      "country": string,
      "organization_unit": string,
      "state": string,
      "common_name": string,
      "organization": string,
      "email": string
    },
    "validity": {
      "issued": timestamp,
      "expire": timestamp
    },
    "pem": string,
    "key": {
      "algorithm": string,
      "size": number
    },
    "fingerprint": number
  }
}

Example:
{
  "web_certificate": {
    "issued_to": {
      "locality": "San%20Francisco", 
      "country": "US", 
      "organization_unit": "", 
      "state": "CA", 
      "common_name": "WPIRAS-W7", 
      "organization": "Riverbed%20Technology", 
      "email": ""
    }, 
    "issued_by": {
      "locality": "San%20Francisco", 
      "country": "US", 
      "organization_unit": "", 
      "state": "CA", 
      "common_name": "WPIRAS-W7", 
      "organization": "Riverbed%20Technology", 
      "email": ""
    }, 
    "validity": {
      "issued": 1348695181, 
      "expire": 1380231181
    }, 
    "pem": "-----BEGIN%20CERTIFICATE-----%0AMIIDyTCCArGgAwIBAgIRAMjqZzJo2/e4lqogFGp6IcswDQYJKoZIhvcNAQENBQAw%0AZDESMBAGA1UEAxMJV1BJUkFTLVc3MRwwGgYDVQQKExNSaXZlcmJlZCBUZWNobm9s%0Ab2d5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMQswCQYDVQQIEwJDQTELMAkGA1UE%0ABhMCVVMwHhcNMTIwOTI2MjEzMzAxWhcNMTMwOTI2MjEzMzAxWjBkMRIwEAYDVQQD%0AEwlXUElSQVMtVzcxHDAaBgNVBAoTE1JpdmVyYmVkIFRlY2hub2xvZ3kxFjAUBgNV%0ABAcTDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJVUzCCASIw%0ADQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMH60nt9gWvQ+I983CxAsSdFk7KT%0AbuIEdqCzN90ULzecIg0oBtZmp+EcwpWhOJKrG66XRkTUqrCH2EY2Ppkf09TZXdsB%0A3pk6CUajNrCkCPfdXPRKa6oixqWunT2n0spt5gseZa6atjQSXO6T3pn5Hslll5bX%0AjUnT2cCWd1bM2y7YX9EwCVr3h6QlKds+YCkZpEHA7b1wvB3xnLaxlclCzxzEdwBc%0A2SeJy/ILiPwLGXsu568fae5gC6r2tAVsohw4Xb9S1bbl1AJNcTj44FCsfZ66nhVS%0AqXAPAv5d6Uf2A7bAT5/Km/inDYfUduwf4WpPN28+rxQ00DdaHI9GapkFCY0CAwEA%0AAaN2MHQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE%0AFBM4OhBjBV4Btfh5hNw9N3G4G10RMB8GA1UdIwQYMBaAFBM4OhBjBV4Btfh5hNw9%0AN3G4G10RMBEGCWCGSAGG+EIBAQQEAwICBDANBgkqhkiG9w0BAQ0FAAOCAQEASY+U%0AsTWf8Rhx6PoTE4y8bcWA3TItsseHAWicKwJgEQQ5xzmzr+Jfj46ToQVSUcyLvWgT%0AjUTuNRrUbFXTk23zkICRZQHWaBgA2jV2GDY1wyP8EsrCxLVW6YTWIzh3uGBa0b4H%0A+eWt0V+FkRy7uzBg5PQEZl910gt48pULu4qG4NjYuiZV5+aujsjUHK4w4CWixIDi%0ApDmixAlzUpoE3yedQ+yzXlRDjQcwanxRR68GBPkH/1MZpLs+xJoC0IomUEgr9Ilj%0A5aKOm0uacalQq4wGNODKGdApiZeMpKgQ7OzBxvCWsGu2qoduNNDDzdT2jTyciu6J%0AwXX+DIergacItTw7bA==%0A-----END%20CERTIFICATE-----%0A", 
    "key": {
      "algorithm": "RSA", 
      "size": 2048
    }, 
    "fingerprint": {
      "algorithm": "SHA1", 
      "value": "1B:FA:66:5B:B4:8C:00:4B:D4:59:02:75:30:A8:91:CB:E3:17:B2:5A"
    }
  }, 
  "trusted_profilers": [
    {
      "id": "default_profiler", 
      "certificate": {
        "issued_to": {
          "locality": "", 
          "country": "", 
          "organization_unit": "", 
          "state": "", 
          "common_name": "Mazu", 
          "organization": "", 
          "email": ""
        }, 
        "issued_by": {
          "locality": "", 
          "country": "", 
          "organization_unit": "", 
          "state": "", 
          "common_name": "Mazu", 
          "organization": "", 
          "email": ""
        }, 
        "validity": {
          "issued": 1159807421, 
          "expire": 1475167421
        }, 
        "pem": "-----BEGIN%20CERTIFICATE-----%0AMIIBsTCCARqgAwIBAgIJAOqvgxZRcO+ZMA0GCSqGSIb3DQEBBAUAMA8xDTALBgNV%0ABAMTBE1henUwHhcNMDYxMDAyMTY0MzQxWhcNMTYwOTI5MTY0MzQxWjAPMQ0wCwYD%0AVQQDEwRNYXp1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0e+f4pJY2eSm1%0A8U579OKJIyxc/sdKXlLOw0zK6SoNu7XNHmNoObNhQV+3PoSbZNyqW3GuZ54EEKUw%0AG54kDzHu9cZMGEWvNO6syjZZlfBORpklQoNEsNxAkbhTr9DXfloFKiLouDl8E7jB%0AhMkbKxnpNcfcl+NEuQ8av2QQWp3jfQIDAQABoxUwEzARBglghkgBhvhCAQEEBAMC%0ABkAwDQYJKoZIhvcNAQEEBQADgYEATnoqJSym+wATLxgb2Ujdy4CY0gawUXHjidaE%0AehyejGdw6VhXpf4lP9Q8JfVERjCoroVkiXenVQe/zer7Qf2hiDB/5s02/+8uiEeq%0AMJpzsSdEYZUSgpyAcws5PDyr2GVFMI3dfPnl28hVavIkR8r05BPDxKbb8Ic6HWpT%0ACTDPH3w=%0A-----END%20CERTIFICATE-----%0A", 
        "key": {
          "algorithm": "RSA", 
          "size": 1024
        }, 
        "fingerprint": {
          "algorithm": "SHA1", 
          "value": "19:41:76:AD:7C:B3:40:01:70:5F:C8:50:85:AD:8F:F2:32:BC:D0:48"
        }
      }
    }, 
    {
      "id": "default_profiler_fips", 
      "certificate": {
        "issued_to": {
          "locality": "", 
          "country": "", 
          "organization_unit": "", 
          "state": "", 
          "common_name": "Cascade%20MNMP%20Default%20Certificate", 
          "organization": "Riverbed%20Technology,%20Inc.", 
          "email": "support@riverbed.com"
        }, 
        "issued_by": {
          "locality": "", 
          "country": "", 
          "organization_unit": "", 
          "state": "", 
          "common_name": "Cascade%20MNMP%20Default%20Certificate", 
          "organization": "Riverbed%20Technology,%20Inc.", 
          "email": "support@riverbed.com"
        }, 
        "validity": {
          "issued": 1339518445, 
          "expire": 1654878445
        }, 
        "pem": "-----BEGIN%20CERTIFICATE-----%0AMIID3zCCAsegAwIBAgIJALUIRiJTYgMoMA0GCSqGSIb3DQEBDQUAMHQxKTAnBgNV%0ABAMTIENhc2NhZGUgTU5NUCBEZWZhdWx0IENlcnRpZmljYXRlMSIwIAYDVQQKExlS%0AaXZlcmJlZCBUZWNobm9sb2d5LCBJbmMuMSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0%0AQHJpdmVyYmVkLmNvbTAeFw0xMjA2MTIxNjI3MjVaFw0yMjA2MTAxNjI3MjVaMHQx%0AKTAnBgNVBAMTIENhc2NhZGUgTU5NUCBEZWZhdWx0IENlcnRpZmljYXRlMSIwIAYD%0AVQQKExlSaXZlcmJlZCBUZWNobm9sb2d5LCBJbmMuMSMwIQYJKoZIhvcNAQkBFhRz%0AdXBwb3J0QHJpdmVyYmVkLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC%0AggEBALwfP4rRlcUvHNHVjxhh+/a1w/O2kIXdqUUturbsXVeu7nYj0zqXjySf4jI1%0AMSQKou6JT5jPGPxHWCrwfmwpqYaTnIZpJYOd78WIhufRmVPb5j1QXShO6NNqpXi5%0Ap9cp3/4dxZSsfocJCLZngs0HiQhFo382MTUc5Jg/lpBgFhnStX3u/SnZZKAd+ibc%0Aew+mDRZDD4A+HNOo+FvmywbRSbYAUL74MT9K+0JJgH/RTAvjOCsUuR1ej70oxRjI%0AwIuMbddH0eZ/KMdGp9ptcgRpeW2ibIRnGBZ7FMhNegsom8e3VIZejKDrKEDAgtSf%0A15v8/15bkoItGzfXsjAXt628RO0CAwEAAaN0MHIwHQYDVR0OBBYEFNHS1lF+lyYf%0AmVAXV/T0xjkgupO7MB8GA1UdIwQYMBaAFNHS1lF+lyYfmVAXV/T0xjkgupO7MBEG%0ACWCGSAGG+EIBAQQEAwIGwDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw%0ADQYJKoZIhvcNAQENBQADggEBAB8FM5z12oDHfmPMQp2d7OfRQAzPtuCdHEYI9AJ9%0A8sTcA0d8xTfCIEYyglXCijoE42iVx9Pgfo4PO7yCqxNa9kpNMnEISm2ZQv2E0noM%0ADmpIrT0z5BcfxcWulqx1Y2RwP+RkeU2atdpPSAboyLex6SXbKKREmjBZLvP7OBZb%0AAuNnIdVPONpsHHDbOAh5UtVdvJ1fUmme/NHcKG8aixaynTV3HoOX7YtG1hT5H+YM%0A1ImpfK5NJJuBra13e6nDKvaLmd9EVbrW8vAQwP3/jLNT3DyRvCuq6MaJl+kSRNz2%0Ai7gWkZzoLH0AKvL1Imu14gVKk6K9BLMrjeSR0fS6hMwpl0s=%0A-----END%20CERTIFICATE-----%0A", 
        "key": {
          "algorithm": "RSA", 
          "size": 2048
        }, 
        "fingerprint": {
          "algorithm": "SHA1", 
          "value": "91:5C:1B:B7:FA:F6:CF:46:8B:EF:AE:DC:F2:4B:77:3E:30:6B:03:52"
        }
      }
    }
  ], 
  "profiler_export_certificate": {
    "issued_to": {
      "locality": "", 
      "country": "", 
      "organization_unit": "", 
      "state": "", 
      "common_name": "Mazu", 
      "organization": "", 
      "email": ""
    }, 
    "issued_by": {
      "locality": "", 
      "country": "", 
      "organization_unit": "", 
      "state": "", 
      "common_name": "Mazu", 
      "organization": "", 
      "email": ""
    }, 
    "validity": {
      "issued": 1159807421, 
      "expire": 1475167421
    }, 
    "pem": "-----BEGIN%20CERTIFICATE-----%0AMIIBsTCCARqgAwIBAgIJAOqvgxZRcO+ZMA0GCSqGSIb3DQEBBAUAMA8xDTALBgNV%0ABAMTBE1henUwHhcNMDYxMDAyMTY0MzQxWhcNMTYwOTI5MTY0MzQxWjAPMQ0wCwYD%0AVQQDEwRNYXp1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0e+f4pJY2eSm1%0A8U579OKJIyxc/sdKXlLOw0zK6SoNu7XNHmNoObNhQV+3PoSbZNyqW3GuZ54EEKUw%0AG54kDzHu9cZMGEWvNO6syjZZlfBORpklQoNEsNxAkbhTr9DXfloFKiLouDl8E7jB%0AhMkbKxnpNcfcl+NEuQ8av2QQWp3jfQIDAQABoxUwEzARBglghkgBhvhCAQEEBAMC%0ABkAwDQYJKoZIhvcNAQEEBQADgYEATnoqJSym+wATLxgb2Ujdy4CY0gawUXHjidaE%0AehyejGdw6VhXpf4lP9Q8JfVERjCoroVkiXenVQe/zer7Qf2hiDB/5s02/+8uiEeq%0AMJpzsSdEYZUSgpyAcws5PDyr2GVFMI3dfPnl28hVavIkR8r05BPDxKbb8Ic6HWpT%0ACTDPH3w=%0A-----END%20CERTIFICATE-----%0A", 
    "key": {
      "algorithm": "RSA", 
      "size": 1024
    }, 
    "fingerprint": {
      "algorithm": "SHA1", 
      "value": "19:41:76:AD:7C:B3:40:01:70:5F:C8:50:85:AD:8F:F2:32:BC:D0:48"
    }
  }
}
Property Name Type Description Notes
certificates <object> Certificates info,
certificates.web_certificate <object> Certificate's info
certificates.web_certificate.issued_to <object> Certificate's details
certificates.web_certificate.issued_to.
locality
<string> Subject's locality
certificates.web_certificate.issued_to.
country
<string> Subject's state
certificates.web_certificate.issued_to.
organization_unit
<string> Subject's organization unit
certificates.web_certificate.issued_to.
state
<string> Subject's state (2 letters code)
certificates.web_certificate.issued_to.
common_name
<string> Subject's common name
certificates.web_certificate.issued_to.
organization
<string> Subject's organization
certificates.web_certificate.issued_to.
email
<string> Subject's email
certificates.web_certificate.issued_by <object> Certificate's details
certificates.web_certificate.issued_by.
locality
<string> Subject's locality
certificates.web_certificate.issued_by.
country
<string> Subject's state
certificates.web_certificate.issued_by.
organization_unit
<string> Subject's organization unit
certificates.web_certificate.issued_by.
state
<string> Subject's state (2 letters code)
certificates.web_certificate.issued_by.
common_name
<string> Subject's common name
certificates.web_certificate.issued_by.
organization
<string> Subject's organization
certificates.web_certificate.issued_by.
email
<string> Subject's email
certificates.web_certificate.validity <object> Certificate's validity info
certificates.web_certificate.validity.
issued
<timestamp> Issueing date timestamp in Unix time format Seconds since January 1, 1970
certificates.web_certificate.validity.
expire
<timestamp> Expire date timestamp in Unix time format Seconds since January 1, 1970
certificates.web_certificate.pem <string> Contains the certificate in PEM format encode with Base64. This field contains only the public part of the certificate.
certificates.web_certificate.key <object> Contains information about the certificate's key
certificates.web_certificate.key.
algorithm
<string> Key algorithm Values: RSA
certificates.web_certificate.key.size <number> Key length
certificates.web_certificate.fingerprint <number> Certificate's fingerprint info
certificates.trusted_profilers <array of <object>> List of Trusted Profiler certificates
certificates.trusted_profilers
[trusted_profiler]
<object> Contains Trusted Profilers certificates info
certificates.trusted_profilers
[trusted_profiler].id
<string> ID associated with the Trusted Profiler certificate
certificates.trusted_profilers
[trusted_profiler].certificate
<object> Certificate's info
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to
<object> Certificate's details
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.locality
<string> Subject's locality
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.country
<string> Subject's state
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.organization_unit
<string> Subject's organization unit
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.state
<string> Subject's state (2 letters code)
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.common_name
<string> Subject's common name
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.organization
<string> Subject's organization
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_to.email
<string> Subject's email
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by
<object> Certificate's details
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.locality
<string> Subject's locality
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.country
<string> Subject's state
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.organization_unit
<string> Subject's organization unit
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.state
<string> Subject's state (2 letters code)
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.common_name
<string> Subject's common name
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.organization
<string> Subject's organization
certificates.trusted_profilers
[trusted_profiler].certificate.
issued_by.email
<string> Subject's email
certificates.trusted_profilers
[trusted_profiler].certificate.
validity
<object> Certificate's validity info
certificates.trusted_profilers
[trusted_profiler].certificate.
validity.issued
<timestamp> Issueing date timestamp in Unix time format Seconds since January 1, 1970
certificates.trusted_profilers
[trusted_profiler].certificate.
validity.expire
<timestamp> Expire date timestamp in Unix time format Seconds since January 1, 1970
certificates.trusted_profilers
[trusted_profiler].certificate.pem
<string> Contains the certificate in PEM format encode with Base64. This field contains only the public part of the certificate.
certificates.trusted_profilers
[trusted_profiler].certificate.key
<object> Contains information about the certificate's key
certificates.trusted_profilers
[trusted_profiler].certificate.key.
algorithm
<string> Key algorithm Values: RSA
certificates.trusted_profilers
[trusted_profiler].certificate.key.
size
<number> Key length
certificates.trusted_profilers
[trusted_profiler].certificate.
fingerprint
<number> Certificate's fingerprint info
certificates.profiler_export_certificate <object> Certificate's info
certificates.profiler_export_certificate.
issued_to
<object> Certificate's details
certificates.profiler_export_certificate.
issued_to.locality
<string> Subject's locality
certificates.profiler_export_certificate.
issued_to.country
<string> Subject's state
certificates.profiler_export_certificate.
issued_to.organization_unit
<string> Subject's organization unit
certificates.profiler_export_certificate.
issued_to.state
<string> Subject's state (2 letters code)
certificates.profiler_export_certificate.
issued_to.common_name
<string> Subject's common name
certificates.profiler_export_certificate.
issued_to.organization
<string> Subject's organization
certificates.profiler_export_certificate.
issued_to.email
<string> Subject's email
certificates.profiler_export_certificate.
issued_by
<object> Certificate's details
certificates.profiler_export_certificate.
issued_by.locality
<string> Subject's locality
certificates.profiler_export_certificate.
issued_by.country
<string> Subject's state
certificates.profiler_export_certificate.
issued_by.organization_unit
<string> Subject's organization unit
certificates.profiler_export_certificate.
issued_by.state
<string> Subject's state (2 letters code)
certificates.profiler_export_certificate.
issued_by.common_name
<string> Subject's common name
certificates.profiler_export_certificate.
issued_by.organization
<string> Subject's organization
certificates.profiler_export_certificate.
issued_by.email
<string> Subject's email
certificates.profiler_export_certificate.
validity
<object> Certificate's validity info
certificates.profiler_export_certificate.
validity.issued
<timestamp> Issueing date timestamp in Unix time format Seconds since January 1, 1970
certificates.profiler_export_certificate.
validity.expire
<timestamp> Expire date timestamp in Unix time format Seconds since January 1, 1970
certificates.profiler_export_certificate.
pem
<string> Contains the certificate in PEM format encode with Base64. This field contains only the public part of the certificate.
certificates.profiler_export_certificate.
key
<object> Contains information about the certificate's key
certificates.profiler_export_certificate.
key.algorithm
<string> Key algorithm Values: RSA
certificates.profiler_export_certificate.
key.size
<number> Key length
certificates.profiler_export_certificate.
fingerprint
<number> Certificate's fingerprint info

certificates: Generate profiler export certificate

Request generation of new self-signed certificate and private key for profiler export

POST https://{device}/api/shark/5.1/settings/certificates/profiler_export/generate
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "issued_to": {
    "locality": string,
    "country": string,
    "organization_unit": string,
    "state": string,
    "organization": string,
    "email": string
  },
  "validity": {
    "days": number
  }
}

Example:
{
  "issued_to": {
    "locality": "San%20Francisco", 
    "country": "US", 
    "organization_unit": "CascadeUnit", 
    "state": "CA", 
    "organization": "Riverbed%20Technology", 
    "email": "admin%40riverbed.com"
  }, 
  "validity": {
    "days": 365
  }
}
Property Name Type Description Notes
certificate_info <object> Contains info used to generate a new self signed certificate (only for Web Server and Profiler Export certificates)
certificate_info.issued_to <object> Contains data to generate a new self-signed certificate
certificate_info.issued_to.locality <string> Subject's locality
certificate_info.issued_to.country <string> Subject's country
certificate_info.issued_to.
organization_unit
<string> Subject's organization unit
certificate_info.issued_to.state <string> Subject's state (2 letters code)
certificate_info.issued_to.organization <string> Subject's organization
certificate_info.issued_to.email <string> Subject's email
certificate_info.validity <object> Validity days for a new self signed certificate
certificate_info.validity.days <number> Validity days for a new self signed certificate
Response Body

On success, the server does not provide any body in the responses.

definitions: Update Service Response Time ports configuration

Update the list of configured Service Response Time ports

PUT https://{device}/api/shark/5.1/definitions/srt_ports
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[
  number
]

Example:
[
  20, 
  25, 
  69, 
  80, 
  139, 
  143, 
  443, 
  465
]
Property Name Type Description Notes
srt_ports <array of <number>> List of service response time ports
srt_ports[port] <number>
Response Body

On success, the server does not provide any body in the responses.

definitions: List Service Response Time ports

Get the list of configured lService Response Time ports

GET https://{device}/api/shark/5.1/definitions/srt_ports
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  number
]

Example:
[
  20, 
  25, 
  69, 
  80, 
  139, 
  143, 
  443, 
  465
]
Property Name Type Description Notes
srt_ports <array of <number>> List of service response time ports
srt_ports[port] <number>

definitions: List layer 4 mappings

Get the list of configured layer 4 mappings

GET https://{device}/api/shark/5.1/definitions/layer4_mappings
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ layer4_mapping ]

Example:
[
  {
    "override": true, 
    "priority": 0, 
    "hosts": [
      "192.168.140.18"
    ], 
    "name": "My_server", 
    "ports": [
      {
        "port_range": "99", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "15", 
        "protocol": "TCP"
      }
    ]
  }, 
  {
    "override": false, 
    "priority": 1, 
    "hosts": [
      "192.168.141.1"
    ], 
    "name": "My_server2", 
    "ports": [
      {
        "port_range": "1000", 
        "protocol": "UDP"
      }, 
      {
        "port_range": "1001", 
        "protocol": "UDP"
      }
    ]
  }
]
Property Name Type Description Notes
layer4_mappings <array of <layer4_mapping>> List of layer4 mapping definitions
layer4_mappings[layer4_mapping] <layer4_mapping> Instance of a <layer4_mapping>

definitions: Update port groups configuration

Update the list of configured port groups

PUT https://{device}/api/shark/5.1/definitions/port_groups
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[ port_group ]

Example:
[
  {
    "priority": 0, 
    "name": "Web", 
    "ports": [
      {
        "port_range": "80", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "8080", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "443", 
        "protocol": "TCP"
      }
    ]
  }, 
  {
    "priority": 1, 
    "name": "Email", 
    "ports": [
      {
        "port_range": "25", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "465", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "587", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "110", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "995", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "143", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "585", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "993", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "119", 
        "protocol": "TCP"
      }
    ]
  }
]
Property Name Type Description Notes
port_groups <array of <port_group>> List of port group definitions
port_groups[port_group] <port_group> Instance of a <port_group>
Response Body

On success, the server does not provide any body in the responses.

definitions: Update custom applications configuration

Update the list of configured custom applications

PUT https://{device}/api/shark/5.1/definitions/custom_applications
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[ custom_application ]

Example:
[
  {
    "name": "My_Bugzilla", 
    "uri": "http://bugzilla.mydomain.com/"
  }, 
  {
    "name": "My_App1", 
    "uri": "http://myserver.mydomain.com/app1/*"
  }
]
Property Name Type Description Notes
applications <array of <custom_application>> List of custom L7 signature definitions
applications[application] <custom_application> Instance of a <custom_application>
Response Body

On success, the server does not provide any body in the responses.

definitions: Update port names configuration

Update the list of configured port names

PUT https://{device}/api/shark/5.1/definitions/port_names
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[ port_name ]

Example:
[
  {
    "udp": "http", 
    "port": 80, 
    "tcp": "http"
  }, 
  {
    "udp": "ms-sql-s", 
    "port": 1433, 
    "tcp": "ms-sql-s"
  }
]
Property Name Type Description Notes
port_names <array of <port_name>> List of port name definitions
port_names[port_name] <port_name> Instance of a <port_name>
Response Body

On success, the server does not provide any body in the responses.

definitions: List port groups

Get the list of configured port groups

GET https://{device}/api/shark/5.1/definitions/port_groups
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ port_group ]

Example:
[
  {
    "priority": 0, 
    "name": "Web", 
    "ports": [
      {
        "port_range": "80", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "8080", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "443", 
        "protocol": "TCP"
      }
    ]
  }, 
  {
    "priority": 1, 
    "name": "Email", 
    "ports": [
      {
        "port_range": "25", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "465", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "587", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "110", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "995", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "143", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "585", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "993", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "119", 
        "protocol": "TCP"
      }
    ]
  }
]
Property Name Type Description Notes
port_groups <array of <port_group>> List of port group definitions
port_groups[port_group] <port_group> Instance of a <port_group>

definitions: List applications

Get the list of configured applications

GET https://{device}/api/shark/5.1/definitions/applications
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ application ]

Example:
[
  {
    "display_name": "Facebook", 
    "type": 1, 
    "description": "Facebook is a social networking service.", 
    "id": 206
  }, 
  {
    "display_name": "Google", 
    "type": 1, 
    "description": "Internet searching on Google's search engine site google.com (or international equivalent) and/or encrypted traffic from other Google services.", 
    "id": 259
  }
]
Property Name Type Description Notes
applications <array of <application>> List of application definitions
applications[application] <application> Instance of an <application>

definitions: Update layer 4 mappings configuration

Update the list of configured layer 4 mappings

PUT https://{device}/api/shark/5.1/definitions/layer4_mappings
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[ layer4_mapping ]

Example:
[
  {
    "override": true, 
    "priority": 0, 
    "hosts": [
      "192.168.140.18"
    ], 
    "name": "My_server", 
    "ports": [
      {
        "port_range": "99", 
        "protocol": "TCP"
      }, 
      {
        "port_range": "15", 
        "protocol": "TCP"
      }
    ]
  }, 
  {
    "override": false, 
    "priority": 1, 
    "hosts": [
      "192.168.141.1"
    ], 
    "name": "My_server2", 
    "ports": [
      {
        "port_range": "1000", 
        "protocol": "UDP"
      }, 
      {
        "port_range": "1001", 
        "protocol": "UDP"
      }
    ]
  }
]
Property Name Type Description Notes
layer4_mappings <array of <layer4_mapping>> List of layer4 mapping definitions
layer4_mappings[layer4_mapping] <layer4_mapping> Instance of a <layer4_mapping>
Response Body

On success, the server does not provide any body in the responses.

definitions: List custom applications

Get the list of configured custom applications

GET https://{device}/api/shark/5.1/definitions/custom_applications
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ custom_application ]

Example:
[
  {
    "name": "My_Bugzilla", 
    "uri": "http://bugzilla.mydomain.com/"
  }, 
  {
    "name": "My_App1", 
    "uri": "http://myserver.mydomain.com/app1/*"
  }
]
Property Name Type Description Notes
applications <array of <custom_application>> List of custom L7 signature definitions
applications[application] <custom_application> Instance of a <custom_application>

definitions: List port names

Get the list of configured port names

GET https://{device}/api/shark/5.1/definitions/port_names
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ port_name ]

Example:
[
  {
    "udp": "http", 
    "port": 80, 
    "tcp": "http"
  }, 
  {
    "udp": "ms-sql-s", 
    "port": 1433, 
    "tcp": "ms-sql-s"
  }
]
Property Name Type Description Notes
port_names <array of <port_name>> List of port name definitions
port_names[port_name] <port_name> Instance of a <port_name>

filesystem: Delete timeskew estimate

Delete time skew estimate results for multisegment file {file_id}.

DELETE https://{device}/api/shark/5.1/fs/{file_id}/fs/timeskew_estimate
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server does not provide any body in the responses.

filesystem: Move file or directory

Request move of file or directory resource {file_id}

POST https://{device}/api/shark/5.1/fs/{file_id}/move
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Request Body

Provide a request body with the following structure:

  • JSON
{
  "destination": string
}

Example:
{
  "destination": "/admin/new-dir/http.cap"
}
Property Name Type Description Notes
move <object> Contains the resource's destination id for a move operation
move.destination <string> Resource's destination id
Response Body

On success, the server does not provide any body in the responses.

filesystem: Get file checksum

Obtain a checksum for a trace file.

GET https://{device}/api/shark/5.1/fs/{file_id}/checksum
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "method": string,
  "value": string
}

Example:
{
  "method": "SHA256", 
  "value": "db8afb5138e5dcea93092ebcb8d20ab855e68b086d6541d68a942914e2a74372"
}
Property Name Type Description Notes
checksum <object> Contains info about a checksum calculated on a trace file
checksum.method <string> Checksum algorithm Values: SHA256
checksum.value <string> Trace file's checksum

filesystem: Create file or directory

Create trace file, merged file, multisegment file, or directory on the Shark. The file path is specified in the 'Content-Disposition' HTTP header and the file type to be created is specified using the 'Content-Type' HTTP header.

POST https://{device}/api/shark/5.1/fs/{directory_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
directory_id <string> The directory in which the file or directory is to be created
HTTP Headers
Property Name Type Description Notes
Content-Type <string> The type of object to be created Values: application/x-vnd.tcpdump, x-shark-directory, application/json, or text/xml
Content-Disposition <string> The name of the file or directory to be created
Request Body VariantsCreate trace file

Content-Type: application/x-vnd.tcpdump

Provide a request body containing the file contents with content type application/x-vnd.tcpdump.

Create directory

Content-Type: x-shark-directory

Do not provide a request body.

Create merged or multisegment file

Content-Type: application/json or text/xml

Provide a request body with the following structure:

  • JSON
{
  "linked_sources": [
    {
      "path": string,
      "timeskew": number,
      "description": string,
      "default_source": boolean
    }
  ],
  "type": string
}

Example:
{
  "linked_sources": [
    {
      "path": "../2-router1-in.pcap", 
      "description": "This source uses a relative path", 
      "default_source": true
    }, 
    {
      "path": "fs/admin/4-router2-in.pcap", 
      "description": "This source uses an absolute path", 
      "timeskew": 100000000
    }, 
    {
      "path": "6-router3-in.pcap", 
      "description": "This source uses a file name"
    }
  ], 
  "type": "MULTISEGMENT_FILE"
}
Property Name Type Description Notes
request <object> Contains info about a new multisegment or merged file
request.linked_sources <array of <object>> Linked sources details list
request.linked_sources[linked_source] <object>
request.linked_sources[linked_source].
path
<string> Linked source path. It could be either an absolute path (fs/ID) or a relative path starting from the aggregated file folder.
request.linked_sources[linked_source].
timeskew
<number> It is the packets timestamps offset associated with the linked source Optional
request.linked_sources[linked_source].
description
<string> A simple description field associated with the linked source Optional
request.linked_sources[linked_source].
default_source
<boolean> The default source is the reference source in a multisegment file collection and it is used as reference for the time skew calculation Optional
request.type <string> File type Values: MULTISEGMENT_FILE, MERGED_FILE
Response Body

On success, the server does not provide any body in the responses.

filesystem: Delete file

Delete file {file_id}. NOTE: If a file to be deleted is open for any reason, the delete operation will fail.

DELETE https://{device}/api/shark/5.1/fs/{file_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server does not provide any body in the responses.

filesystem: List directory

Get information on directory {directory_id}.

GET https://{device}/api/shark/5.1/fs/{directory_id}?details={string}&recursive={string}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
details <string> 'true' for details on all files, 'false' otherwise. Optional
recursive <string> 'true' for recursive directory listing, 'false' otherwise. Optional
directory_id <string> Directory path
Response Body

Returns a dir data object.

filesystem: Get file index info

Get index information for trace file {file_id}.

GET https://{device}/api/shark/5.1/fs/{file_id}/index
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

Returns an index_info data object.

filesystem: Modify merged or multisegment file

Modify merged file or multisegment file {file_id} on the Shark.

PUT https://{device}/api/shark/5.1/fs/{file_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Request Body

Provide a request body with the following structure:

  • JSON
{
  "linked_sources": [
    {
      "path": string,
      "timeskew": number,
      "description": string,
      "default_source": boolean
    }
  ],
  "type": string
}

Example:
{
  "linked_sources": [
    {
      "path": "../2-router1-in.pcap", 
      "description": "This source uses a relative path", 
      "default_source": true
    }, 
    {
      "path": "fs/admin/4-router2-in.pcap", 
      "description": "This source uses an absolute path", 
      "timeskew": 100000000
    }, 
    {
      "path": "6-router3-in.pcap", 
      "description": "This source uses a file name"
    }
  ], 
  "type": "MULTISEGMENT_FILE"
}
Property Name Type Description Notes
aggregated <object> Contains info about a new multisegment or merged file
aggregated.linked_sources <array of <object>> Linked sources details list
aggregated.linked_sources[linked_source] <object>
aggregated.linked_sources[linked_source].
path
<string> Linked source path. It could be either an absolute path (fs/ID) or a relative path starting from the aggregated file folder.
aggregated.linked_sources[linked_source].
timeskew
<number> It is the packets timestamps offset associated with the linked source Optional
aggregated.linked_sources[linked_source].
description
<string> A simple description field associated with the linked source Optional
aggregated.linked_sources[linked_source].
default_source
<boolean> The default source is the reference source in a multisegment file collection and it is used as reference for the time skew calculation Optional
aggregated.type <string> File type Values: MULTISEGMENT_FILE, MERGED_FILE
Response Body

On success, the server does not provide any body in the responses.

filesystem: Download file contents

Download contents of trace file, merged file, or multisegment file {file_id}.

GET https://{device}/api/shark/5.1/fs/{file_id}/download
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server returns a request body containing data with content type application/x-vnd.tcpdump or application/xml.

filesystem: List root directory

Get the contents of the root filesystem directory

GET https://{device}/api/shark/5.1/fs
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[ dir ]

Example:
[
  {
    "files": [
      {
        "created": 1347053478, 
        "modified": 1347053478, 
        "type": "PCAPNG_FILE", 
        "id": "/admin/http-ng.pcapng", 
        "link_type": "DLT_EN10MB", 
        "size": 149952
      }, 
      {
        "created": 1343026049, 
        "modified": 1343026050, 
        "type": "PCAP_FILE", 
        "id": "/admin/prova.cap", 
        "link_type": "DLT_EN10MB", 
        "size": 145919
      }
    ], 
    "dirs": [
      {
        "files": [
          {
            "created": 1342768036, 
            "modified": 1342768037, 
            "type": "PCAP_FILE", 
            "id": "/admin/multisegment/2-router1-in.pcap", 
            "link_type": "DLT_EN10MB", 
            "size": 16246
          }, 
          {
            "created": 1342768038, 
            "modified": 1342768038, 
            "type": "PCAP_FILE", 
            "id": "/admin/multisegment/4-router2-in.pcap", 
            "link_type": "DLT_EN10MB", 
            "size": 15988
          }, 
          {
            "created": 1342768038, 
            "modified": 1342768038, 
            "type": "PCAP_FILE", 
            "id": "/admin/multisegment/6-router3-in.pcap", 
            "link_type": "DLT_EN10MB", 
            "size": 15988
          }, 
          {
            "created": 1342768079, 
            "linked_sources": [
              {
                "path": "2-router1-in.pcap"
              }, 
              {
                "path": "4-router2-in.pcap"
              }, 
              {
                "path": "6-router3-in.pcap"
              }
            ], 
            "modified": 1348764826, 
            "type": "MERGED_FILE", 
            "id": "/admin/multisegment/merged.pvt", 
            "link_type": "DLT_EN10MB", 
            "size": 243
          }, 
          {
            "created": 1342768084, 
            "linked_sources": [
              {
                "path": "2-router1-in.pcap", 
                "default_source": true
              }, 
              {
                "path": "4-router2-in.pcap"
              }, 
              {
                "path": "fs/admin/multisegment/6-router3-in.pcap"
              }
            ], 
            "modified": 1348764826, 
            "type": "MULTISEGMENT_FILE", 
            "id": "/admin/multisegment/multisegment.pvt", 
            "link_type": "DLT_EN10MB", 
            "size": 264
          }
        ], 
        "dirs": [], 
        "description": "This is a multi-segment file", 
        "created": 1342767955, 
        "modified": 1343077906, 
        "id": "/admin/multisegment"
      }, 
      {
        "files": [
          {
            "created": 1342645581, 
            "modified": 1342646988, 
            "type": "PCAP_FILE", 
            "id": "/admin/new-dir/http.cap", 
            "link_type": "DLT_EN10MB", 
            "size": 147456
          }
        ], 
        "dirs": [], 
        "description": "This is a custom folder", 
        "created": 1348764627, 
        "modified": 1348764743, 
        "id": "/admin/new-dir"
      }
    ], 
    "description": "My Files", 
    "created": 1341252038, 
    "modified": 1348764743, 
    "id": "/admin"
  }, 
  {
    "files": [], 
    "dirs": [], 
    "description": "normaluser Home Folder", 
    "created": 1341252038, 
    "modified": 1341252038, 
    "id": "/normaluser"
  }, 
  {
    "files": [], 
    "dirs": [], 
    "description": "Files Shared with Administrators", 
    "created": 1341252871, 
    "modified": 1341252871, 
    "id": "/Administrators"
  }, 
  {
    "files": [], 
    "dirs": [], 
    "description": "Files Shared with NormalUsers", 
    "created": 1341252871, 
    "modified": 1341252871, 
    "id": "/NormalUsers"
  }, 
  {
    "files": [], 
    "dirs": [], 
    "description": "Files Shared with Viewers", 
    "created": 1341252871, 
    "modified": 1341252871, 
    "id": "/Viewers"
  }
]
Property Name Type Description Notes
fs <array of <dir>> List of directories
fs[dir] <dir> Instance of a <dir>

filesystem: Create file index

Create index for trace file {file_id}

POST https://{device}/api/shark/5.1/fs/{file_id}/index
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

filesystem: Delete file index

Delete index for trace file {file_id}.

DELETE https://{device}/api/shark/5.1/fs/{file_id}/index
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server does not provide any body in the responses.

filesystem: Delete directory

Delete user directory {directory_id}. If the directory is not empty, all files in the directory will be deleted as well. NOTE: If a file to be deleted is open for any reason, the delete operation will fail.

DELETE https://{device}/api/shark/5.1/fs/{directory_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
directory_id <string> Directory path
Response Body

On success, the server does not provide any body in the responses.

filesystem: Get timeskew estimate results

Time skew information for multisegment file {file_id}

GET https://{device}/api/shark/5.1/fs/{file_id}/timeskew_estimate
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File path
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "status": {
    "first_invalid_timestamp": timestamp-hp,
    "state": string,
    "duplicated_count": number,
    "invalid_source_index": number
  },
  "results": [
    {
      "timeskew": number,
      "source_index": number
    }
  ]
}

Example:
{
  "status": {
    "state": "OK"
  }, 
  "results": [
    {
      "timeskew": 0, 
      "source_index": 1
    }, 
    {
      "timeskew": -1000000, 
      "source_index": 2
    }, 
    {
      "timeskew": 30654891, 
      "source_index": 3
    }
  ]
}
Property Name Type Description Notes
timeskew_estimate <object> Time skew estimate information
timeskew_estimate.status <object> Status information for the time skew estimate
timeskew_estimate.status.
first_invalid_timestamp
<timestamp-hp> First timestamp causing the TIMESTAMP_WARNING code
timeskew_estimate.status.state <string> Values: EMPTY, COMPUTING, NO_PACKETS, UNIDIRECTIONAL, TIMESTAMP_WARNING, DUPLICATE_WARNING, OK
timeskew_estimate.status.
duplicated_count
<number> Number of packets with the same timestamp in different capture points. Check this field in order to estimate if this is a real issue or not: if the number of packets experiencing this problem is high probably at least two files contain the same packets, otherwise it means that for some packets the timeskew observed makes the delay becomes zero (timeskew = delay for that packet). Optional
timeskew_estimate.status.
invalid_source_index
<number> Index of the file causing the TIMESTAMP_WARNING code Optional
timeskew_estimate.results <array of <object>> List of linked sources Optional
timeskew_estimate.results[result] <object> Time skew information for a linked source
timeskew_estimate.results[result].
timeskew
<number> Estimated time skew compared to the default source
timeskew_estimate.results[result].
source_index
<number> Index of the linked source

filesystem: Create timeskew estimate

Start a timeskew estimation process for multisegment file {file_id}.

PUT https://{device}/api/shark/5.1/fs/{file_id}/fs/timeskew_estimate?packet_count={number}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
packet_count <number> Maximum number of packets to process Optional
file_id <string> File path
Request Body

Do not provide a request body.

Response Body

On success, the server does not provide any body in the responses.

filesystem: Get file info

Get descriptive information for file or directory {file_id}

GET https://{device}/api/shark/5.1/fs/{file_id}
Authorization

This request requires authorization.

Parameters
Property Name Type Description Notes
file_id <string> File or directory path
Response Body

Returns a file data object.

licenses: Get license detail

Get information on license {license_key}.

GET https://{device}/api/shark/5.1/settings/licenses/{license_key}
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "status": string,
  "valid_from": timestamp,
  "valid_to": timestamp,
  "feature_name": string,
  "key": string,
  "is_platform": boolean,
  "feature_description": string
}

Example:
{
  "status": "VALID", 
  "valid_from": "no_limit", 
  "valid_to": "no_limit", 
  "feature_name": "VLAB", 
  "key": "LK1-VLAB-0000-0000-1-2644-76FE-6436", 
  "is_platform": false, 
  "feature_description": "VLAB License, Max Limits"
}
Property Name Type Description Notes
license <object> Information for a Shark license
license.status <string> Status of this license Values: INVALID, VALID, VALID_SOON, FUTURE, EXPIRES_SOON, EXPIRED, SUPERSEDED, UNKNOWN
license.valid_from <timestamp> Date/time (seconds from epoch) at which this license becomes valid (0 if always valid) Seconds since January 1, 1970
license.valid_to <timestamp> Date/time (seconds from epoch) at which this license expires (0 if always valid) Seconds since January 1, 1970
license.feature_name <string> Feature covered by this license
license.key <string> License key for this license
license.is_platform <boolean> 'true' if this is a platform license
license.feature_description <string> Description of feature covered by this license

licenses: Delete license

Delete license {license_key}.

DELETE https://{device}/api/shark/5.1/settings/licenses/{license_key}
Authorization

This request requires authorization.

Response Body

On success, the server does not provide any body in the responses.

licenses: Add licenses

Add a set of licenses to the system.

POST https://{device}/api/shark/5.1/settings/licenses
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[
  string
]

Example:
[
  "LK1-FEAT1-0000-0000-1-2644-76FE-6436"
]
Property Name Type Description Notes
licenses <array of <string>> List of license keys to add to the system
licenses[license] <string>
Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "url": string,
    "status": string,
    "key": string
  }
]

Example:
[
  {
    "status": "VALID", 
    "url": "/api/shark/4.0/settings/licenses/LK1-VLAB-0000-0000-1-2644-76FE-6436.json", 
    "key": "LK1-FEAT1-0000-0000-1-2644-76FE-6436"
  }
]
Property Name Type Description Notes
licenses <array of <object>> List of new licenses added to the system
licenses[license] <object> Description of a new license added to the system
licenses[license].url <string> Resource URI for the new license key
licenses[license].status <string> Status of the new license Values: INVALID, VALID, VALID_SOON, FUTURE, EXPIRES_SOON, EXPIRED, SUPERSEDED, UNKNOWN
licenses[license].key <string> New license key added to the system

licenses: List licenses

Get the list of licenses on the system.

GET https://{device}/api/shark/5.1/settings/licenses
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  {
    "status": string,
    "valid_from": timestamp,
    "valid_to": timestamp,
    "feature_name": string,
    "key": string,
    "is_platform": boolean,
    "feature_description": string
  }
]

Example:
[
  {
    "status": "VALID", 
    "valid_from": "no_limit", 
    "valid_to": "no_limit", 
    "feature_name": "VLAB", 
    "key": "LK1-FEAT1-0000-0000-1-2644-76FE-6436", 
    "is_platform": false, 
    "feature_description": "FEAT1 License, Max Limits"
  }
]
Property Name Type Description Notes
licenses <array of <object>> List of licenses currently in system
licenses[license] <object> Information for a Shark license
licenses[license].status <string> Status of this license Values: INVALID, VALID, VALID_SOON, FUTURE, EXPIRES_SOON, EXPIRED, SUPERSEDED, UNKNOWN
licenses[license].valid_from <timestamp> Date/time (seconds from epoch) at which this license becomes valid (0 if always valid) Seconds since January 1, 1970
licenses[license].valid_to <timestamp> Date/time (seconds from epoch) at which this license expires (0 if always valid) Seconds since January 1, 1970
licenses[license].feature_name <string> Feature covered by this license
licenses[license].key <string> License key for this license
licenses[license].is_platform <boolean> 'true' if this is a platform license
licenses[license].feature_description <string> Description of feature covered by this license

licenses: Generate license request key

Request license request code.

POST https://{device}/api/shark/5.1/settings/licenses/request
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "token": string
}

Example:
{
  "token": "SHKDSK50-67A9DA741BE548DA151FA1F3"
}
Property Name Type Description Notes
license_token <object> Submit a new license request
license_token.token <string> License request token (obtained from Riverbed customer support)
Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "license_req": string
}

Example:
{
  "license_req": "shark.localdom-C1239NVM-GUGQSGVL-FLHVVEQM-CQLHS1FF-FPYU9U5L-417PUN6K-9WGPHV0A-JPKS8KG6"
}
Property Name Type Description Notes
license_request <object>
license_request.license_req <string> License request string (to be submitted to Riverbed customer support)

licenses: Get license status

Get current licensing status of this Shark VE.

GET https://{device}/api/shark/5.1/settings/licenses/status
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "num_profilers": number,
  "packet_storage_size": number,
  "enterprise_pilot_level": number,
  "application_status": string,
  "profiler_export_capacity": number
}

Example:
{
  "application_status": "LICENSED", 
  "num_profilers": 2, 
  "profiler_export_capacity": 200, 
  "packet_storage_size": 50, 
  "enterprise_pilot_level": 0
}
Property Name Type Description Notes
license_status <object> License status information for this Shark VE
license_status.num_profilers <number> Number of profilers supported for export
license_status.packet_storage_size <number> Packet storage capacity (GB)
license_status.enterprise_pilot_level <number> Enterprise Pilot level
license_status.application_status <string> License status for this Shark VE Values: LICENSED_PHYSICAL, LICENSED, UNLICENSED, STATUS_CHANGED, UNKNOWN
license_status.profiler_export_capacity <number> Export capacity (MBPS) for profiler export

stats: Get profiler export stats

Get profiler export information

GET https://{device}/api/shark/5.1/stats/profiler_export
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "last_minute": {
    "exported": {
      "ip_bytes": number,
      "packets": number,
      "flows": number
    },
    "rejected": {
      "ip_bytes": number,
      "packets": number,
      "flows": number
    }
  },
  "last_week": {
    "exported": {
      "ip_bytes": number,
      "packets": number,
      "average_flows": number,
      "flows": number,
      "peak_flows": number
    },
    "rejected": {
      "ip_bytes": number,
      "packets": number,
      "average_flows": number,
      "flows": number,
      "peak_flows": number
    }
  }
}

Example:
{
  "last_minute": {
    "exported": {
      "ip_bytes": 7945576960, 
      "packets": 31037410, 
      "flows": 973309
    }, 
    "rejected": {
      "ip_bytes": 0, 
      "packets": 0, 
      "flows": 0
    }
  }, 
  "last_week": {
    "exported": {
      "ip_bytes": 6491276748032, 
      "packets": 25356549797, 
      "flows": 795175093, 
      "average_flows": 78886, 
      "peak_flows": 1000000
    }, 
    "rejected": {
      "ip_bytes": 13589455872, 
      "packets": 53083812, 
      "flows": 1664668, 
      "average_flows": 165, 
      "peak_flows": 600000
    }
  }
}
Property Name Type Description Notes
profiler_export_stats <object> Statistics on the Profiler Export
profiler_export_stats.last_minute <object> Statistics on the data exported in the last minute
profiler_export_stats.last_minute.
exported
<object> Values sent to the profiler/s in the last minute
profiler_export_stats.last_minute.
exported.ip_bytes
<number> Cumulative number of IP bytes (IP header included) for the exported flows
profiler_export_stats.last_minute.
exported.packets
<number> Cumulative number of packets for the exported flows
profiler_export_stats.last_minute.
exported.flows
<number> Number of exported flows
profiler_export_stats.last_minute.
rejected
<object> Values analyzed but not sent to the profiler/s in the last minute
profiler_export_stats.last_minute.
rejected.ip_bytes
<number> Cumulative number of IP bytes (IP header included) for the rejected flows
profiler_export_stats.last_minute.
rejected.packets
<number> Cumulative number of packets for the rejected flows
profiler_export_stats.last_minute.
rejected.flows
<number> Number of rejected flows
profiler_export_stats.last_week <object> Statistics on the data exported in the last week
profiler_export_stats.last_week.exported <object> Values sent to the profiler/s in the last week
profiler_export_stats.last_week.exported.
ip_bytes
<number> Cumulative number of IP bytes (IP header included) for the exported flows
profiler_export_stats.last_week.exported.
packets
<number> Cumulative number of packets for the exported flows
profiler_export_stats.last_week.exported.
average_flows
<number> Average number of flows exported in the last week
profiler_export_stats.last_week.exported.
flows
<number> Number of exported flows
profiler_export_stats.last_week.exported.
peak_flows
<number> Max number of flows exported in a minute in the last week
profiler_export_stats.last_week.rejected <object> Values analyzed but not sent to the profiler/s in the last week
profiler_export_stats.last_week.rejected.
ip_bytes
<number> Cumulative number of IP bytes (IP header included) for the rejected flows
profiler_export_stats.last_week.rejected.
packets
<number> Cumulative number of packets for the rejected flows
profiler_export_stats.last_week.rejected.
average_flows
<number> Average number of flows rejected in the last week
profiler_export_stats.last_week.rejected.
flows
<number> Number of rejected flows
profiler_export_stats.last_week.rejected.
peak_flows
<number> Max number of flows rejected in a minute in the last week

stats: Get memory stats

Get system memory information

GET https://{device}/api/shark/5.1/stats/memory
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "status": string,
  "available": number,
  "used": number,
  "reserved": number,
  "by_category": [
    {
      "bytes": number,
      "name": string,
      "allocations": number
    }
  ],
  "by_handle": [
    {
      "by_category": [
        {
          "bytes": number,
          "name": string,
          "allocations": number
        }
      ],
      "name": string
    }
  ],
  "total": number
}

Example:
{
  "status": "OK", 
  "available": 4658311920, 
  "used": 1603742992, 
  "reserved": 1407188992, 
  "by_category": [
    {
      "bytes": 153696, 
      "name": "DATAMATRIX", 
      "allocations": 12
    }, 
    {
      "bytes": 264, 
      "name": "DBTABLE", 
      "allocations": 5
    }, 
    {
      "bytes": 41946816, 
      "name": "DEMUXER", 
      "allocations": 10
    }, 
    {
      "bytes": 181560, 
      "name": "DNS_RESOLVER", 
      "allocations": 9
    }, 
    {
      "bytes": 196554000, 
      "name": "GLOBAL", 
      "allocations": 75053
    }, 
    {
      "bytes": 153808, 
      "name": "IP_FRAGMENTATION", 
      "allocations": 6
    }, 
    {
      "bytes": 1120, 
      "name": "MEMORY_REPOSITORY", 
      "allocations": 2
    }, 
    {
      "bytes": 23581312, 
      "name": "NETFLOW", 
      "allocations": 75006
    }, 
    {
      "bytes": 130535424, 
      "name": "PACKET", 
      "allocations": 3
    }
  ], 
  "by_handle": [
    {
      "by_category": [
        {
          "bytes": 88680, 
          "name": "DATAMATRIX", 
          "allocations": 7
        }, 
        {
          "bytes": 264, 
          "name": "DBTABLE", 
          "allocations": 5
        }, 
        {
          "bytes": 165848, 
          "name": "GLOBAL", 
          "allocations": 15
        }, 
        {
          "bytes": 76904, 
          "name": "IP_FRAGMENTATION", 
          "allocations": 3
        }
      ], 
      "name": "00000001"
    }, 
    {
      "by_category": [
        {
          "bytes": 65016, 
          "name": "DATAMATRIX", 
          "allocations": 5
        }, 
        {
          "bytes": 141920, 
          "name": "GLOBAL", 
          "allocations": 8
        }, 
        {
          "bytes": 76904, 
          "name": "IP_FRAGMENTATION", 
          "allocations": 3
        }
      ], 
      "name": "FFFFFF01"
    }
  ], 
  "total": 6262054912
}
Property Name Type Description Notes
memory <object>
memory.status <string> Memory usage status Values: OK, WARNING, CRITICAL, CONFIGURATION_ERROR
memory.available <number> Memory available for use
memory.used <number> Memory used by the system
memory.reserved <number> Reserved memory Typically reserved by the packet recorder
memory.by_category <array of <object>> List of memory usage for each category
memory.by_category[category] <object> Memory usage for a single category
memory.by_category[category].bytes <number> Allocated bytes for this category
memory.by_category[category].name <string> Category name
memory.by_category[category].allocations <number> Number of memory allocation operations for this category
memory.by_handle <array of <object>> List of memory usage for each handle (i.e. view, etc.)
memory.by_handle[handle] <object> Memory usage for a single handle
memory.by_handle[handle].by_category <array of <object>> List of memory usage in each category for the given handle
memory.by_handle[handle].by_category
[category]
<object> Memory usage for a single category
memory.by_handle[handle].by_category
[category].bytes
<number> Allocated bytes for this category
memory.by_handle[handle].by_category
[category].name
<string> Category name
memory.by_handle[handle].by_category
[category].allocations
<number> Number of memory allocation operations for this category
memory.by_handle[handle].name <string> Handle name
memory.total <number> Total memory on the system

stats: Get storage stats

Get system storage information

GET https://{device}/api/shark/5.1/stats/storage
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "packet_storage": {
    "status": string,
    "used": number,
    "reserved": number,
    "unused": number,
    "unallocated": number,
    "allocated": number,
    "total": number
  },
  "os_storage": {
    "status": string,
    "index_storage": {
      "unused": number,
      "allocated": number,
      "total": number,
      "used": number,
      "unallocated": number
    },
    "disk_storage": {
      "unused": number,
      "total": number,
      "used": number
    }
  }
}

Example:
{
  "packet_storage": {
    "status": "OK", 
    "used": 0, 
    "reserved": 0, 
    "unused": 0, 
    "unallocated": 3999688294400, 
    "allocated": 0, 
    "total": 3999688294400
  }, 
  "os_storage": {
    "status": "OK", 
    "index_storage": {
      "unused": 0, 
      "allocated": 0, 
      "total": 457108365312, 
      "used": 0, 
      "unallocated": 457108365312
    }, 
    "disk_storage": {
      "unused": 457108365312, 
      "total": 457360449536, 
      "used": 252084224
    }
  }
}
Property Name Type Description Notes
storage <object>
storage.packet_storage <object> Packet storage statistics
storage.packet_storage.status <string> Packet storage status Values: OK, DISK_FULL, CORRUPTED, HW_FAILURE, UNLICENSED, LICENSE_EXCEEDED, UNKNOWN
storage.packet_storage.used <number> Packet storage space currently being used
storage.packet_storage.reserved <number> Packet storage reserved size
storage.packet_storage.unused <number> Allocated but not yet used packet storage space
storage.packet_storage.unallocated <number> Unallocated packet storage size
storage.packet_storage.allocated <number> Allocated packet storage size
storage.packet_storage.total <number> Total packet storage size
storage.os_storage <object> System storage statistics
storage.os_storage.status <string> System storage status Values: OK, WARNING, CRITICAL, UNKNOWN
storage.os_storage.index_storage <object> Index storage status
storage.os_storage.index_storage.unused <number> Unused index storage space
storage.os_storage.index_storage.
allocated
<number> Allocated index storage space by all the existing jobs
storage.os_storage.index_storage.total <number> Total index storage size (unallocated + allocated)
storage.os_storage.index_storage.used <number> Used index storage space
storage.os_storage.index_storage.
unallocated
<number> Available index storage space
storage.os_storage.disk_storage <object> System disk status
storage.os_storage.disk_storage.unused <number> System disk storage not being used
storage.os_storage.disk_storage.total <number> Total system disk storage size
storage.os_storage.disk_storage.used <number> System disk storage currently being used

settings: Update firewall settings

Update firewall settings.

PUT https://{device}/api/shark/5.1/settings/firewall
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
{
  "rules": [
    {
      "action": string,
      "source": string,
      "protocol": string,
      "description": string,
      "dest_port": number
    }
  ],
  "firewall_enabled": boolean,
  "default_policy": string
}

Example:
{
  "rules": [
    {
      "action": "ACCEPT", 
      "source": "10.0.0.1", 
      "protocol": "TCP", 
      "description": "Allow HTTPS for all the hosts", 
      "dest_port": 65535
    }, 
    {
      "action": "ACCEPT", 
      "protocol": "TCP", 
      "description": "Allow SSH for all the hosts", 
      "dest_port": 22
    }, 
    {
      "action": "ACCEPT", 
      "protocol": "ICMP", 
      "description": "Allow ICMP for all the hosts"
    }
  ], 
  "firewall_enabled": true, 
  "default_policy": "DROP"
}
Property Name Type Description Notes
firewall_settings <object> Firewall configuration
firewall_settings.rules <array of <object>> Rules list
firewall_settings.rules[rule] <object>
firewall_settings.rules[rule].action <string> Rule action, what the firewall should do with the packet when it matches the rule Values: ACCEPT, DROP, LOG_ACCEPT, LOG_DROP
firewall_settings.rules[rule].source <string> Rule IPV4 source address. It can contain a netmasks specified as CIDR format or as IPV4 address. Optional
firewall_settings.rules[rule].protocol <string> Rule protocol Optional; Values: TCP, UDP, ICMP, ALL
firewall_settings.rules[rule].
description
<string> Rule description Optional
firewall_settings.rules[rule].dest_port <number> Rule destination port Optional
firewall_settings.firewall_enabled <boolean> Enables or disable the firewall
firewall_settings.default_policy <string> Firewall default policy Values: ACCEPT, DROP
Response Body

On success, the server does not provide any body in the responses.

settings: Get snmp settings

Get SNMP settings.

GET https://{device}/api/shark/5.1/settings/snmp
Authorization

This request requires authorization.

Response Body

Returns a snmp_settings data object.

settings: Update profiler export settings

Update profiler export settings.

PUT https://{device}/api/shark/5.1/settings/profiler_export
Authorization

This request requires authorization.

Request Body

Provide a profilerexport_settings data object.

Response Body

On success, the server does not provide any body in the responses.

settings: Get profiler export settings

Get profiler export settings.

GET https://{device}/api/shark/5.1/settings/profiler_export
Authorization

This request requires authorization.

Response Body

Returns a profilerexport_settings data object.

settings: Update authentication settings

Update authentication settings.

PUT https://{device}/api/shark/5.1/settings/auth
Authorization

This request requires authorization.

Request Body

Provide an auth_settings data object.

Response Body

On success, the server does not provide any body in the responses.

settings: Update basic settings

Update basic settings.

PUT https://{device}/api/shark/5.1/settings/basic
Authorization

This request requires authorization.

Request Body

Provide a basic_settings data object.

Response Body

On success, the server does not provide any body in the responses.

settings: Get authentication settings

Get authentication settings.

GET https://{device}/api/shark/5.1/settings/auth
Authorization

This request requires authorization.

Response Body

Returns an auth_settings data object.

settings: Update cors domains

Update the list of domains enabled for Cross Origin Resource Sharing.

PUT https://{device}/api/shark/5.1/settings/cors_domains
Authorization

This request requires authorization.

Request Body

Provide a request body with the following structure:

  • JSON
[
  string
]

Example:
[
  "http://example_domain1.com", 
  "http://example_domain2.com"
]
Property Name Type Description Notes
cors_domains <array of <string>> List of CORS (Cross-Origin Resource Sharing) domains
cors_domains[domain] <string>
Response Body

On success, the server does not provide any body in the responses.

settings: Get basic settings

Get basic settings.

GET https://{device}/api/shark/5.1/settings/basic
Authorization

This request requires authorization.

Response Body

Returns a basic_settings data object.

settings: Update snmp settings

Update SNMP settings.

PUT https://{device}/api/shark/5.1/settings/snmp
Authorization

This request requires authorization.

Request Body

Provide a snmp_settings data object.

Response Body

On success, the server does not provide any body in the responses.

settings: Get firewall settings

Get firewall settings.

GET https://{device}/api/shark/5.1/settings/firewall
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
{
  "rules": [
    {
      "action": string,
      "source": string,
      "protocol": string,
      "description": string,
      "dest_port": number
    }
  ],
  "firewall_enabled": boolean,
  "default_policy": string
}

Example:
{
  "rules": [
    {
      "action": "ACCEPT", 
      "source": "10.0.0.1", 
      "protocol": "TCP", 
      "description": "Allow HTTPS for all the hosts", 
      "dest_port": 65535
    }, 
    {
      "action": "ACCEPT", 
      "protocol": "TCP", 
      "description": "Allow SSH for all the hosts", 
      "dest_port": 22
    }, 
    {
      "action": "ACCEPT", 
      "protocol": "ICMP", 
      "description": "Allow ICMP for all the hosts"
    }
  ], 
  "firewall_enabled": true, 
  "default_policy": "DROP"
}
Property Name Type Description Notes
firewall_settings <object> Firewall configuration
firewall_settings.rules <array of <object>> Rules list
firewall_settings.rules[rule] <object>
firewall_settings.rules[rule].action <string> Rule action, what the firewall should do with the packet when it matches the rule Values: ACCEPT, DROP, LOG_ACCEPT, LOG_DROP
firewall_settings.rules[rule].source <string> Rule IPV4 source address. It can contain a netmasks specified as CIDR format or as IPV4 address. Optional
firewall_settings.rules[rule].protocol <string> Rule protocol Optional; Values: TCP, UDP, ICMP, ALL
firewall_settings.rules[rule].
description
<string> Rule description Optional
firewall_settings.rules[rule].dest_port <number> Rule destination port Optional
firewall_settings.firewall_enabled <boolean> Enables or disable the firewall
firewall_settings.default_policy <string> Firewall default policy Values: ACCEPT, DROP

settings: List cors domains

Get the list of domains enabled for Cross Origin Resource Sharing.

GET https://{device}/api/shark/5.1/settings/cors_domains
Authorization

This request requires authorization.

Response Body

On success, the server returns a response body with the following structure:

  • JSON
[
  string
]

Example:
[
  "http://example_domain1.com", 
  "http://example_domain2.com"
]
Property Name Type Description Notes
cors_domains <array of <string>> List of CORS (Cross-Origin Resource Sharing) domains
cors_domains[domain] <string>

settings: Update audit settings

Update audit settings.

PUT https://{device}/api/shark/5.1/settings/audit
Authorization

This request requires authorization.

Request Body

Provide an audit_settings data object.

Response Body

On success, the server does not provide any body in the responses.

settings: Get notification settings

Management daemon configuration parameters.

GET https://{device}/api/shark/5.1/settings/notification
Authorization

This request requires authorization.

Response Body

Returns a notification_settings data object.

settings: Get audit settings

Get audit settings.

GET https://{device}/api/shark/5.1/settings/audit
Authorization

This request requires authorization.

Response Body

Returns an audit_settings data object.

settings: Update notification settings

Update management daemon configuration parameters.

PUT https://{device}/api/shark/5.1/settings/notification
Authorization

This request requires authorization.

Request Body

Provide a notification_settings data object.

Response Body

On success, the server does not provide any body in the responses.

Data types

application

  • JSON
{
  "type": number,
  "display_name": string,
  "description": string,
  "id": number
}

Example:
{
  "display_name": "Facebook", 
  "type": 1, 
  "description": "Facebook is a social networking service.", 
  "id": 206
}
Property Name Type Description Notes
application <object>
application.type <number> Application type, it can be either '1' for system applications or '2' for custom applications
application.display_name <string> Application name
application.description <string> Application description Optional
application.id <number> Application unique identifier

audit_settings

Audit system settings

  • JSON
{
  "audit_categories": [
    {
      "min_remote_server_level": string,
      "audit_type": string,
      "min_syslog_level": string,
      "name": string,
      "description": string
    }
  ],
  "remote_log_servers": [
    {
      "protocol": string,
      "port": number,
      "server_name": string,
      "severity": string
    }
  ]
}

Example:
{
  "audit_categories": [
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "AUTHENTICATION", 
      "description": "Audits login attempts.", 
      "name": "AUTHENTICATION", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "CAPTURE_JOBS", 
      "description": "Audits capture jobs.", 
      "name": "CAPTURE JOBS", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "CRYPTOGRAPHY", 
      "description": "Audits cryptographic functions.", 
      "name": "CRYPTOGRAPHY", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "COMMUNICATIONS", 
      "description": "Audits HTTPS requests.", 
      "name": "COMMUNICATIONS", 
      "min_syslog_level": "DISABLED"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "FILE_OPERATIONS", 
      "description": "Audits file operations.", 
      "name": "FILE OPERATIONS", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "LICENSING", 
      "description": "Audits license operations.", 
      "name": "LICENSING", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "SETTINGS", 
      "description": "Audits modification to settings.", 
      "name": "SETTINGS", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "SYSTEM_OPERATIONS", 
      "description": "Audits system operations.", 
      "name": "SYSTEM OPERATIONS", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "USER_MANAGEMENT", 
      "description": "Audits users and groups setting.", 
      "name": "USER MANAGEMENT", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "VIEWS", 
      "description": "Audits view operations.", 
      "name": "VIEWS", 
      "min_syslog_level": "INFO"
    }, 
    {
      "min_remote_server_level": "DISABLED", 
      "audit_type": "WATCHES", 
      "description": "Audits watch operations.", 
      "name": "WATCHES", 
      "min_syslog_level": "INFO"
    }
  ], 
  "remote_log_servers": [
    {
      "protocol": "UDP", 
      "severity": "WARNING", 
      "server_name": "test", 
      "port": 62471
    }
  ]
}
Property Name Type Description Notes
audit_settings <object> Audit system settings
audit_settings.audit_categories <array of <object>> List of audit categories
audit_settings.audit_categories
[audit_category]
<object> Information for each audit category
audit_settings.audit_categories
[audit_category].
min_remote_server_level
<string> Audit levels for each audit category Values: INFO, ERROR, DISABLED
audit_settings.audit_categories
[audit_category].audit_type
<string> Audit categories Values: AUTHENTICATION, CAPTURE_JOBS, CRYPTOGRAPHY, COMMUNICATIONS, FILE_OPERATIONS, LICENSING, SETTINGS, SYSTEM_OPERATIONS, USER_MANAGEMENT, VIEWS, WATCHES
audit_settings.audit_categories
[audit_category].min_syslog_level
<string> Audit levels for each audit category Values: INFO, ERROR, DISABLED
audit_settings.audit_categories
[audit_category].name
<string> Audit category name
audit_settings.audit_categories
[audit_category].description
<string> Description of events captured by this audit category
audit_settings.remote_log_servers <array of <object>> List of remote log server configurations
audit_settings.remote_log_servers
[remote_server]
<object> Information for each remote log server
audit_settings.remote_log_servers
[remote_server].protocol
<string> TCP or UDP protocol Values: TCP, UDP
audit_settings.remote_log_servers
[remote_server].port
<number> TCP/UDP port on the server
audit_settings.remote_log_servers
[remote_server].server_name
<string> Remote server name
audit_settings.remote_log_servers
[remote_server].severity
<string> Severity levels Values: INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY

auth_settings

Authentication settings

  • JSON
{
  "local_settings": {
    "min_password_length": number,
    "password_change_history": number,
    "min_password_special_character": number,
    "min_password_upper_letter": number,
    "max_unsuccessful_login_attempts": number,
    "min_password_lower_letter": number,
    "max_password_lifetime_days": number,
    "min_password_numeric_character": number
  },
  "password_settings": {
    "allow_password_save": boolean
  },
  "radius_settings": {
    "client_port": string,
    "servers": [
      {
        "shared_secret": string,
        "port": number,
        "address": string
      }
    ],
    "encryption_protocol": string,
    "accounting_enabled": boolean
  },
  "tacacs_settings": {
    "accounting_terminator": string,
    "accounting_enabled": boolean,
    "accounting_value": string,
    "authorization_value": string,
    "servers": [
      {
        "shared_secret": string,
        "port": number,
        "address": string
      }
    ],
    "client_port": string,
    "authorization_response_attribute": string,
    "authorization_attribute": string,
    "accounting_attribute": string
  },
  "auth_sequence": [
    string
  ],
  "remote_auth_settings": {
    "fallback_on_unavailable_only": boolean,
    "default_group": string
  },
  "webui_settings": {
    "login_banner": string,
    "need_purpose": boolean,
    "session_duration": number
  }
}

Example:
{
  "local_settings": {
    "min_password_length": 8, 
    "password_change_history": 10, 
    "min_password_special_character": 1, 
    "min_password_upper_letter": 1, 
    "max_unsuccessful_login_attempts": 3, 
    "min_password_lower_letter": 1, 
    "max_password_lifetime_days": 90, 
    "min_password_numeric_character": 1
  }, 
  "password_settings": {
    "allow_password_save": false
  }, 
  "radius_settings": {
    "client_port": "na", 
    "accounting_enabled": false, 
    "encryption_protocol": "PAP", 
    "servers": []
  }, 
  "tacacs_settings": {
    "accounting_terminator": "2>&1", 
    "accounting_enabled": true, 
    "accounting_value": "cace", 
    "authorization_value": "cace", 
    "servers": [
      {
        "address": "10.1.1.1", 
        "port": 49, 
        "shared_secret": "key"
      }
    ], 
    "client_port": "ttyp6", 
    "accounting_attribute": "task_id", 
    "authorization_attribute": "service", 
    "authorization_response_attribute": "*"
  }, 
  "auth_sequence": [
    "LOCAL", 
    "TACACS"
  ], 
  "remote_auth_settings": {
    "fallback_on_unavailable_only": true, 
    "default_group": "Administrators"
  }, 
  "webui_settings": {
    "login_banner": "Welcome to Shark.", 
    "need_purpose": false, 
    "session_duration": 60
  }
}
Property Name Type Description Notes
auth_settings <object> Authentication settings
auth_settings.local_settings <object> Local authentication type parameters
auth_settings.local_settings.
min_password_length
<number> Minimum password length
auth_settings.local_settings.
password_change_history
<number> Number of previous user passwords stored in history
auth_settings.local_settings.
min_password_special_character
<number> Minimum number of special characters
auth_settings.local_settings.
min_password_upper_letter
<number> Minimum number of upper-case letters
auth_settings.local_settings.
max_unsuccessful_login_attempts
<number> Number of unsuccessful attempts before user is locked out
auth_settings.local_settings.
min_password_lower_letter
<number> Minimum number of lower-case letters
auth_settings.local_settings.
max_password_lifetime_days
<number> Number of days after which password expires
auth_settings.local_settings.
min_password_numeric_character
<number> Minimum number of numeric characters
auth_settings.password_settings <object> Settings for password managenent Optional
auth_settings.password_settings.
allow_password_save
<boolean> Indicates if the user is allowed to store the client password locally Optional
auth_settings.radius_settings <object> RADIUS authentication configuration
auth_settings.radius_settings.
client_port
<string> Client port
auth_settings.radius_settings.servers <array of <object>> List of server mappings
auth_settings.radius_settings.servers
[server]
<object>
auth_settings.radius_settings.servers
[server].shared_secret
<string> Shared secret key
auth_settings.radius_settings.servers
[server].port
<number> Port number
auth_settings.radius_settings.servers
[server].address
<string> IP Address
auth_settings.radius_settings.
encryption_protocol
<string> Encryption protocol Values: PAP, CHAP, MSCHAP1, MSCHAP2
auth_settings.radius_settings.
accounting_enabled
<boolean> 'true' to enable RADIUS accounting, 'false' otherwise
auth_settings.tacacs_settings <object> TACACS+ authentication configuration
auth_settings.tacacs_settings.
accounting_terminator
<string> Accounting terminator
auth_settings.tacacs_settings.
accounting_enabled
<boolean> 'true' to enable TACACS+ accounting, 'false' otherwise
auth_settings.tacacs_settings.
accounting_value
<string> Accounting value
auth_settings.tacacs_settings.
authorization_value
<string> Authorization value
auth_settings.tacacs_settings.servers <array of <object>> List of server mappings
auth_settings.tacacs_settings.servers
[server]
<object>
auth_settings.tacacs_settings.servers
[server].shared_secret
<string> Shared secret key
auth_settings.tacacs_settings.servers
[server].port
<number> Port number
auth_settings.tacacs_settings.servers
[server].address
<string> IP Address
auth_settings.tacacs_settings.
client_port
<string> Client port
auth_settings.tacacs_settings.
authorization_response_attribute
<string> Authorization response attribute. If set to '*', only the first attribute-value pair returned by the server will be considered during authorization.
auth_settings.tacacs_settings.
authorization_attribute
<string> Authorization attribute
auth_settings.tacacs_settings.
accounting_attribute
<string> Acccounting attribute
auth_settings.auth_sequence <array of <string>> List of authentication mechanisms used by Shark
auth_settings.auth_sequence[auth_type] <string> Authentication Mode Values: LOCAL, TACACS, RADIUS
auth_settings.remote_auth_settings <object> Additional authentication parameter settings for TACACS+ and RADIUS servers Optional
auth_settings.remote_auth_settings.
fallback_on_unavailable_only
<boolean> 'true' fallbacks to the next authentication mechanism if TACACS+ or RADIUS servers are unavailable, 'false' otherwise
auth_settings.remote_auth_settings.
default_group
<string> Default group used for remote authentication
auth_settings.webui_settings <object> WebUI configuration settings for this Shark
auth_settings.webui_settings.
login_banner
<string> Login banner
auth_settings.webui_settings.
need_purpose
<boolean> Enabled if the user should be prompted to specify a purpose during login
auth_settings.webui_settings.
session_duration
<number> Session inactivity timeout In minutes

basic_settings

Basic Shark configuration options

  • JSON
{
  "ntp_config": {
    "profiler_mode": boolean,
    "servers": [
      string
    ]
  },
  "domain": string,
  "ptp_config": {
    "interface": string,
    "transport": string
  },
  "primary_dns": string,
  "hostname": string,
  "fips_enabled": boolean,
  "mgmt_ports": [
    {
      "enabled": boolean,
      "netmask": string,
      "interface": string,
      "dhcp": boolean,
      "ip_address": string,
      "gateway": string
    }
  ],
  "time_synchronization": string,
  "timezone": string,
  "secondary_dns": string,
  "ssh_enabled": boolean
}

Example:
{
  "ntp_config": {
    "profiler_mode": false, 
    "servers": [
      "10.0.0.1", 
      "10.0.0.2"
    ]
  }, 
  "domain": "riverbed.com", 
  "ptp_config": {
    "interface": "eth0", 
    "transport": "IPV4"
  }, 
  "primary_dns": "10.1.0.1", 
  "hostname": "shark", 
  "fips_enabled": false, 
  "mgmt_ports": [
    {
      "enabled": true, 
      "netmask": "", 
      "interface": "eth0", 
      "dhcp": true, 
      "ip_address": "", 
      "gateway": ""
    }, 
    {
      "enabled": false, 
      "netmask": "255.255.255.0", 
      "interface": "eth1", 
      "dhcp": false, 
      "ip_address": "172.16.22.33", 
      "gateway": "172.16.22.11"
    }
  ], 
  "time_synchronization": "PTP", 
  "timezone": "America/Los_Angeles", 
  "secondary_dns": "172.16.1.1", 
  "ssh_enabled": true
}
Property Name Type Description Notes
basic_settings <object> Basic Shark configuration options
basic_settings.ntp_config <object> Shark NTP Configuration
basic_settings.ntp_config.profiler_mode <boolean> 'true' if Profiler acts as NTP server, 'false' otherwise
basic_settings.ntp_config.servers <array of <string>> List of NTP Servers
basic_settings.ntp_config.servers
[server]
<string>
basic_settings.domain <string> Network domain
basic_settings.ptp_config <object> Transport options for PTP configuration Optional
basic_settings.ptp_config.interface <string> Network interface card on which to connect for time synchronization
basic_settings.ptp_config.transport <string> Type of transport for PTP configuration Optional; Values: IPV4, IPV6, ETHERNET
basic_settings.primary_dns <string> Primary DNS server
basic_settings.hostname <string> Shark host name
basic_settings.fips_enabled <boolean> 'true' if FIPS mode is enabled, 'false' otherwise
basic_settings.mgmt_ports <array of <object>> List of management ports
basic_settings.mgmt_ports[port] <object> Shark management port configuration
basic_settings.mgmt_ports[port].enabled <boolean> 'true' if enabled, 'false' if disabled Optional
basic_settings.mgmt_ports[port].netmask <string> Network mask for this interface (empty of DHCP is enabled)
basic_settings.mgmt_ports[port].
interface
<string> Interface name
basic_settings.mgmt_ports[port].dhcp <boolean> 'true' if DHCP is enabled on this interface, 'false' otherwise
basic_settings.mgmt_ports[port].
ip_address
<string> IPV4 address for this interface (empty if DHCP is enabled)
basic_settings.mgmt_ports[port].gateway <string> Network gateway for this interface (empty if DHCP is enabled)
basic_settings.time_synchronization <string> Protocol for time synchronization Optional; Values: NTP, PTP
basic_settings.timezone <string> Time zone (from IANA Time Zone Database) of this Shark
basic_settings.secondary_dns <string> Secondary DNS server Optional
basic_settings.ssh_enabled <boolean> 'true' if SSH access to this shark is enabled, 'false' otherwise

clip_config

Configuration of a clip

  • JSON
{
  "job_id": string,
  "filters": [
    {
      "type": string,
      "description": string,
      "value": string
    }
  ],
  "description": string
}

Example:
{
  "job_id": "000000A3", 
  "filters": [
    {
      "type": "TIME", 
      "description": "This is a time filter.", 
      "value": "1345830425000000000, 1345830435000000000"
    }, 
    {
      "type": "BPF", 
      "value": "port 80"
    }
  ], 
  "description": "This is a clip on job 000000A3"
}
Property Name Type Description Notes
clip_config <object> Configuration of a clip
clip_config.job_id <string> Job ID on which the clip is applied Optional
clip_config.filters <array of <object>> List of clip filters Optional
clip_config.filters[filters] <object> Configuration for a clip filter
clip_config.filters[filters].type <string> Clip configuration filter type Values: TIME, SHARK, BPF, WIRESHARK_DISPLAY
clip_config.filters[filters].description <string> Description of this filter Optional
clip_config.filters[filters].value <string> Value of this filter
clip_config.description <string> Description of this clip configuration Optional

clip_status

Status information for a clip

  • JSON
{
  "estimated_size": number,
  "modification_time": timestamp,
  "creation_time": timestamp,
  "locked": boolean
}

Example:
{
  "estimated_size": 268435456, 
  "modification_time": 1345830535, 
  "creation_time": 1345830425, 
  "locked": true
}
Property Name Type Description Notes
clip_status <object> Status information for a clip
clip_status.estimated_size <number> Estimated size for this clip in packet storage Optional
clip_status.modification_time <timestamp> Clip last modified time Optional; Seconds since January 1, 1970
clip_status.creation_time <timestamp> Clip creation time Optional; Seconds since January 1, 1970
clip_status.locked <boolean> 'true' if packets and the index for this clip are locked, 'false' otherwise

custom_application

  • JSON
{
  "name": string,
  "uri": string
}

Example:
{
  "name": "My_Bugzilla", 
  "uri": "http://bugzilla.mydomain.com/"
}
Property Name Type Description Notes
custom_application <object>
custom_application.name <string> Custom L7 signature name
custom_application.uri <string> Custom L7 signature URI rule

dimension_restrictions

Specification of dimension restrictions for a watch. Dimension restrictions can be used to narrow down what the watch checks, so that, for example, only some bars in a barchart are observed. If multiple restrictions are present in the list, the server ANDs them.

  • JSON
{
  "sub_restrictions": [ dimension_restrictions ],
  "restrictions": [
    {
      "field": string,
      "value": string
    }
  ],
  "bool_operator": string
}

Example:
{
  "sub_restrictions": [], 
  "restrictions": [
    {
      "field": "c1", 
      "value": "Web"
    }, 
    {
      "field": "c1", 
      "value": "DNS"
    }
  ], 
  "bool_operator": "OR"
}
Property Name Type Description Notes
dimension_restrictions <object> Specification of dimension restrictions for a watch. Dimension restrictions can be used to narrow down what the watch checks, so that, for example, only some bars in a barchart are observed. If multiple restrictions are present in the list, the server ANDs them.
dimension_restrictions.sub_restrictions <array of <dimension_restrictions>> Sub-restriction list
dimension_restrictions.sub_restrictions
[sub_restriction]
<dimension_restrictions> Instance of a <dimension_restrictions>
dimension_restrictions.restrictions <array of <object>> Restriction list
dimension_restrictions.restrictions
[restriction]
<object>
dimension_restrictions.restrictions
[restriction].field
<string> The dimension field identified by the database column name (e.g. c2 or c5) Column numbering starts with 1 and the field must be a dimension
dimension_restrictions.restrictions
[restriction].value
<string> The matching value
dimension_restrictions.bool_operator <string> The boolean operation to apply: "And" or "Or" Values: NOT_INITIALIZED, AND, OR

dir

Directory details

  • JSON
{
  "files": [ file ],
  "dirs": [ dir ],
  "description": string,
  "created": timestamp,
  "modified": timestamp,
  "id": string
}

Example:
{
  "files": [
    {
      "created": 1347053478, 
      "modified": 1347053478, 
      "type": "PCAPNG_FILE", 
      "id": "/admin/http-ng.pcapng", 
      "link_type": "DLT_EN10MB", 
      "size": 149952
    }, 
    {
      "created": 1343026049, 
      "modified": 1343026050, 
      "type": "PCAP_FILE", 
      "id": "/admin/prova.cap", 
      "link_type": "DLT_EN10MB", 
      "size": 145919
    }
  ], 
  "dirs": [
    {
      "files": [
        {
          "created": 1342768036, 
          "modified": 1342768037, 
          "type": "PCAP_FILE", 
          "id": "/admin/multisegment/2-router1-in.pcap", 
          "link_type": "DLT_EN10MB", 
          "size": 16246
        }, 
        {
          "created": 1342768038, 
          "modified": 1342768038, 
          "type": "PCAP_FILE", 
          "id": "/admin/multisegment/4-router2-in.pcap", 
          "link_type": "DLT_EN10MB", 
          "size": 15988
        }, 
        {
          "created": 1342768038, 
          "modified": 1342768038, 
          "type": "PCAP_FILE", 
          "id": "/admin/multisegment/6-router3-in.pcap", 
          "link_type": "DLT_EN10MB", 
          "size": 15988
        }, 
        {
          "created": 1342768079, 
          "linked_sources": [
            {
              "path": "2-router1-in.pcap"
            }, 
            {
              "path": "4-router2-in.pcap"
            }, 
            {
              "path": "6-router3-in.pcap"
            }
          ], 
          "modified": 1348764826, 
          "type": "MERGED_FILE", 
          "id": "/admin/multisegment/merged.pvt", 
          "link_type": "DLT_EN10MB", 
          "size": 243
        }, 
        {
          "created": 1342768084, 
          "linked_sources": [
            {
              "path": "2-router1-in.pcap", 
              "default_source": true
            }, 
            {
              "path": "4-router2-in.pcap"
            }, 
            {
              "path": "fs/admin/multisegment/6-router3-in.pcap"
            }
          ], 
          "modified": 1348764826, 
          "type": "MULTISEGMENT_FILE", 
          "id": "/admin/multisegment/multisegment.pvt", 
          "link_type": "DLT_EN10MB", 
          "size": 264
        }
      ], 
      "dirs": [], 
      "description": "This is a multi-segment file", 
      "created": 1342767955, 
      "modified": 1343077906, 
      "id": "/admin/multisegment"
    }, 
    {
      "files": [
        {
          "created": 1342645581, 
          "modified": 1342646988, 
          "type": "PCAP_FILE", 
          "id": "/admin/new-dir/http.cap", 
          "link_type": "DLT_EN10MB", 
          "size": 147456
        }
      ], 
      "dirs": [], 
      "description": "This is a custom folder", 
      "created": 1348764627, 
      "modified": 1348764743, 
      "id": "/admin/new-dir"
    }
  ], 
  "description": "My Files", 
  "created": 1341252038, 
  "modified": 1348764743, 
  "id": "/admin"
}
Property Name Type Description Notes
dir <object> Directory details
dir.files <array of <file>> List of files
dir.files[file] <file> Instance of a <file>
dir.dirs <array of <dir>> List of directories
dir.dirs[dir] <dir> Instance of a <dir>
dir.description <string> Directory description. It is used when the directory has an alias name. Optional
dir.created <timestamp> Creation time in Unix time format Optional; Seconds since January 1, 1970
dir.modified <timestamp> Modification time in Unix time format Optional; Seconds since January 1, 1970
dir.id <string> Directory id

export

Information about an export

  • JSON
{
  "status": export_status,
  "config": export_config,
  "id": string
}

Example:
{
  "status": {
    "owner": "admin", 
    "bytes_approx": 855784, 
    "state": "RUNNING", 
    "creation_time": 1364334117658433000
  }, 
  "config": {
    "output_format": "PCAP_US", 
    "start_time": 1364230933, 
    "end_time": 1364317200
  }, 
  "id": "000193E1"
}
Property Name Type Description Notes
export <object> Information about an export
export.status <export_status> Status of this export
export.config <export_config> Configuration of this export
export.id <string> ID of export

export_config

  • JSON
{
  "stop_rule": {
    "packet_limit": number,
    "size_limit": number,
    "time_limit": number
  },
  "output_format": string,
  "output_filename": string,
  "end_time": timestamp,
  "filters": [ filter ],
  "snap_length": number,
  "start_time": timestamp
}

Example:
{
  "output_format": "PCAP_US", 
  "start_time": 1364230800, 
  "end_time": 1364317200
}
Property Name Type Description Notes
export_config <object>
export_config.stop_rule <object> Stop rule for a job Optional
export_config.stop_rule.packet_limit <number> Max number of packets Optional
export_config.stop_rule.size_limit <number> Max bytes of packet data Optional
export_config.stop_rule.time_limit <number> Max time in seconds Optional
export_config.output_format <string> Output format (PCAP or PCAP-NG) and resolution of packet stream Values: PCAP_US, PCAP_NS, PCAPNG_US, PCAPNG_NS
export_config.output_filename <string> If sending packets to file, the filename within the Shark file system Optional
export_config.end_time <timestamp> Time (seconds from epoch) at which export is to end Optional; Seconds since January 1, 1970
export_config.filters <array of <filter>> Collection of filters to apply to packets prior to export Optional
export_config.filters[filter] <filter> Instance of a <filter>
export_config.snap_length <number> Packet snap length for this export Optional; Default is 65535
export_config.start_time <timestamp> Time (seconds from epoch) at which export is to begin Optional; Seconds since January 1, 1970

export_status

  • JSON
{
  "owner": string,
  "creation_time": timestamp-hp,
  "state": string,
  "bytes_approx": number
}

Example:
{
  "owner": "admin", 
  "bytes_approx": 855784, 
  "state": "RUNNING", 
  "creation_time": 1364334117658433000
}
Property Name Type Description Notes
export_status <object>
export_status.owner <string> User who initiated the export
export_status.creation_time <timestamp-hp> Time at which the export was created
export_status.state <string> State of the export Values: UNINITIALIZED, LOADED, PARAMS_LOADED, INITIALIZED, READY, RUNNING, ERRORS, DONE, CLOSING, PAUSED
export_status.bytes_approx <number> For exports from a job, approximate number of bytes in the export Optional

file

File's details

  • JSON
{
  "index": index_info,
  "created": timestamp,
  "linked_sources": [
    {
      "path": string,
      "timeskew": number,
      "description": string,
      "default_source": boolean
    }
  ],
  "format": string,
  "modified": timestamp,
  "type": string,
  "id": string,
  "link_type": string,
  "size": number
}

Example:
{
  "created": 1342768079, 
  "linked_sources": [
    {
      "path": "2-router1-in.pcap"
    }, 
    {
      "path": "4-router2-in.pcap"
    }, 
    {
      "path": "6-router3-in.pcap"
    }
  ], 
  "modified": 1348764826, 
  "type": "MERGED_FILE", 
  "id": "/admin/multisegment/merged.pvt", 
  "link_type": "DLT_EN10MB", 
  "size": 243
}
Property Name Type Description Notes
file <object> File's details
file.index <index_info> Index info
file.created <timestamp> Creation time in Unix time format Optional; Seconds since January 1, 1970
file.linked_sources <array of <object>> Linked sources details list Optional
file.linked_sources[linked_source] <object>
file.linked_sources[linked_source].path <string> Linked source path. It could be either an absolute path (fs/ID) or a relative path starting from the aggregated file folder.
file.linked_sources[linked_source].
timeskew
<number> It is the packets timestamps offset associated with the linked source Optional
file.linked_sources[linked_source].
description
<string> A simple description field associated with the linked source Optional
file.linked_sources[linked_source].
default_source
<boolean> The default source is the reference source in a multisegment file collection and it is used as reference for the time skew calculation Optional
file.format <string> File time format Optional; Values: PCAP_US, PCAP_NS, PCAPNG_US, PCAPNG_NS, UNKNOWN
file.modified <timestamp> Modification time in Unix time format Optional; Seconds since January 1, 1970
file.type <string> File type Values: MULTISEGMENT_FILE, MERGED_FILE, PCAP_FILE, PCAPNG_FILE, ERF_FILE, UNKNOWN_FILE
file.id <string> File id
file.link_type <string> Link layer type Optional
file.size <number> File size in bytes Optional

filter

  • JSON
{
  "type": string,
  "description": string,
  "value": string
}

Example:
{
  "type": "BPF", 
  "description": "BPF filter on port 80", 
  "value": "port 80"
}
Property Name Type Description Notes
filter <object>
filter.type <string> Filter type Values: TIME, SHARK, BPF, WIRESHARK_DISPLAY, DECRYPT, STATE
filter.description <string> Description, if needed Optional
filter.value <string> Filter value

group

Definition of a user group

  • JSON
{
  "name": string,
  "capabilities": [
    string
  ],
  "description": string
}

Example:
{
  "name": "Administrators", 
  "capabilities": [
    "CAPABILITY_ADMINISTRATOR"
  ], 
  "description": "Administrators"
}
Property Name Type Description Notes
group <object> Definition of a user group
group.name <string> Group name
group.capabilities <array of <string>> Specifies the list of capabilities for the group
group.capabilities[capability] <string> Specifies the capabilities of the group Values: CAPABILITY_ADMINISTRATOR, CAPABILITY_APPLY_VIEWS_ON_FILES, CAPABILITY_APPLY_VIEWS_ON_INTERFACES, CAPABILITY_SHARE_VIEWS, CAPABILITY_CREATE_FILES, CAPABILITY_IMPORT_FILES, CAPABILITY_EXPORT_FILES, CAPABILITY_CREATE_JOBS, CAPABILITY_SCHEDULE_WATCHES, CAPABILITY_ACCESS_PROBE_FILES
group.description <string> Group description

index_info

Information for one index

  • JSON
{
  "status": string,
  "start_time": timestamp-hp,
  "end_time": timestamp-hp
}

Example:
{
  "status": "OK", 
  "start_time": 1345830425000000000, 
  "end_time": 1345830435000000000
}
Property Name Type Description Notes
index_info <object> Information for one index
index_info.status <string> Running state of an index Values: OK, RUNNING, ERROR
index_info.start_time <timestamp-hp> First packet timestamp for this index
index_info.end_time <timestamp-hp> Last packet timestamp for this index

interface

Information on a Shark interface

  • JSON
{
  "interface_components": [
    string
  ],
  "description": string,
  "virtual_info": {
    "file_name": string,
    "job_handle": string,
    "device_name": string
  },
  "link": {
    "status": string,
    "tap_type": string,
    "stats": {
      "bytes_rx": number,
      "packets_rx": number
    },
    "addresses": [
      {
        "broadcast": string,
        "netmask": string,
        "destination": string,
        "family": string,
        "address": string
      }
    ],
    "dedup_status": string,
    "speed_options": [
      {
        "status": string,
        "speed_mbps": string,
        "duplex_type": string
      }
    ],
    "mac_address": string,
    "is_profiler_export_enabled": boolean,
    "blink_status": string,
    "type": string
  },
  "board": {
    "pass_thru": string,
    "type": string,
    "name": string
  },
  "is_promiscuous_mode": boolean,
  "type": string,
  "id": string,
  "name": string
}

Example:
{
  "interface_components": [], 
  "description": "TurboCap 1Gb device no.0", 
  "link": {
    "status": "UP", 
    "tap_type": "NONE", 
    "stats": {
      "bytes_rx": 73479647, 
      "packets_rx": 1007765
    }, 
    "dedup_status": "DISABLED", 
    "speed_options": [
      {
        "status": "ENABLED", 
        "speed_mbps": "MBPS_10", 
        "duplex_type": "FULL"
      }, 
      {
        "status": "ENABLED", 
        "speed_mbps": "MBPS_10", 
        "duplex_type": "HALF"
      }, 
      {
        "status": "ENABLED", 
        "speed_mbps": "MBPS_100", 
        "duplex_type": "FULL"
      }, 
      {
        "status": "ENABLED", 
        "speed_mbps": "MBPS_100", 
        "duplex_type": "HALF"
      }, 
      {
        "status": "NEGOTIATED", 
        "speed_mbps": "MBPS_1000", 
        "duplex_type": "FULL"
      }
    ], 
    "mac_address": "00:e0:ed:1e:9d:1a", 
    "blink_status": "OFF", 
    "type": "EN10MB"
  }, 
  "board": {
    "pass_thru": "DISABLED", 
    "type": "1G_COPPER", 
    "name": "TurboCap 1 Gigabit Ethernet Board (00:e0:ed:1e:9d:1a)"
  }, 
  "is_promiscuous_mode": true, 
  "type": "TURBOCAP_ADAPTER", 
  "id": "tc0", 
  "name": "tc0"
}
Property Name Type Description Notes
interface <object> Information on a Shark interface
interface.interface_components <array of <string>> For aggregating ports, list of physical ports making up the aggregation
interface.interface_components
[component_interface]
<string>
interface.description <string> String describing this interface
interface.virtual_info <object> Information on a virtual interface (used internally by Shark) Optional
interface.virtual_info.file_name <string> File name corresponding to virtual interface
interface.virtual_info.job_handle <string> If virtual interface is a capture job, handle of the job Optional
interface.virtual_info.device_name <string> Device name corresponding to virtual interface
interface.link <object> Information on a physical interface link Optional
interface.link.status <string> Indicates whether this link is up or down Optional; Values: UP, DOWN, UNKNOWN
interface.link.tap_type <string> Tap type used on this link Values: NONE, CPACKET, GIGAMON_HEADER, GIGAMON_TRAILER, GIGAMON_TRAILER_X12, VSS, VSS_PORT_ID, ANUE, ARISTA, UNKNOWN
interface.link.stats <object> Low-level statistics on traffic over this interface Optional
interface.link.stats.bytes_rx <number> Bytes received
interface.link.stats.packets_rx <number> Packets received
interface.link.addresses <array of <object>> List of link addresses Optional
interface.link.addresses[link_address] <object> Address information for a physical interface
interface.link.addresses[link_address].
broadcast
<string> Broadcast address for this interface
interface.link.addresses[link_address].
netmask
<string> Netmask for this interface
interface.link.addresses[link_address].
destination
<string> Destination address for this interface Optional
interface.link.addresses[link_address].
family
<string> Protocol family served by this interface
interface.link.addresses[link_address].
address
<string> IP address for this interface
interface.link.dedup_status <string> Indicates whether or not packet deduplication has been enabled for this link Optional; Values: ENABLED, DISABLED, NOT_SUPPORTED
interface.link.speed_options <array of <object>> List of link speed options Optional
interface.link.speed_options
[link_speed_option]
<object> Speed, duplex type, and status of a speed option
interface.link.speed_options
[link_speed_option].status
<string> Status of this link speed option for this interface Optional; Values: SUPPORTED, ENABLED, NEGOTIATED
interface.link.speed_options
[link_speed_option].speed_mbps
<string> Throughput for this speed option Values: MBPS_10, MBPS_100, MBPS_1000, MBPS_10000
interface.link.speed_options
[link_speed_option].duplex_type
<string> Duplex type for this speed option Values: HALF, FULL, UNKNOWN
interface.link.mac_address <string> MAC address of this link
interface.link.
is_profiler_export_enabled
<boolean> 'true' if profiler export has been enabled for this link, 'false' otherwise Optional
interface.link.blink_status <string> Indicates 'blink' status for this link Optional; Values: ON, OFF, UNKNOWN
interface.link.type <string> Link layer type of this link Values: NONE, EN10MB, RAW, IEEE802_11_RADIO, PPI, PPP_WITH_DIR, LINUX_SLL, C_HDLC, UNKNOWN
interface.board <object> Information on a physical packet capture board Optional
interface.board.pass_thru <string> Enabled status of pass-thru mode (only supported on 1GB Copper TurboCap cards) Values: ENABLED, DISABLED, NOT_SUPPORTED
interface.board.type <string> Type of this board Values: 1G_COPPER, 1G_FIBER, 10G_FIBER, PCAP, UNKNOWN
interface.board.name <string> Name of this board
interface.is_promiscuous_mode <boolean> 'true' if interface is in promiscuous mode, 'false' otherwise Optional
interface.type <string> Type of this interface Values: TURBOCAP_ADAPTER, PCAP_ADAPTER, AIRPCAP_ADAPTER, VIRTUAL, BOARD_AGGREGATING, AGGREGATING, UNKNOWN
interface.id <string> ID of this interface
interface.name <string> Name of this interface

job_config

Configuration information for a job

  • JSON
{
  "bpf_filter": string,
  "packet_retention": {
    "packet_limit": number,
    "size_limit": number,
    "time_limit": number
  },
  "name": string,
  "start_immediately": boolean,
  "requested_start_time": timestamp,
  "stop_rule": {
    "packet_limit": number,
    "size_limit": number,
    "time_limit": number
  },
  "indexing": {
    "synced": boolean,
    "size_limit": number,
    "dpi_enabled": boolean,
    "time_limit": number
  },
  "interface_description": string,
  "requested_end_time": timestamp,
  "snap_length": number,
  "interface_name": string
}

Example:
{
  "snap_length": 65535, 
  "interface_name": "mon0", 
  "packet_retention": {
    "size_limit": 5368709120
  }, 
  "name": "New Job 1", 
  "interface_description": "mon0"
}
Property Name Type Description Notes
job_config <object> Configuration information for a job
job_config.bpf_filter <string> BPF filter applied to this capture job Optional
job_config.packet_retention <object> Packet retention info for a job
job_config.packet_retention.packet_limit <number> Max number of packets to be retained Optional
job_config.packet_retention.size_limit <number> Max bytes of packet data to be retained
job_config.packet_retention.time_limit <number> Time period for which packet data will be retained Optional
job_config.name <string> Job name
job_config.start_immediately <boolean> 'true' if job is to start immediately upon creation, 'false' otherwise Optional
job_config.requested_start_time <timestamp> Specific time at which job is to start Optional; Seconds since January 1, 1970
job_config.stop_rule <object> Stop rule for a job Optional
job_config.stop_rule.packet_limit <number> Max number of packets Optional
job_config.stop_rule.size_limit <number> Max bytes of packet data Optional
job_config.stop_rule.time_limit <number> Max time in seconds Optional
job_config.indexing <object> Job index configuration Optional
job_config.indexing.synced <boolean> 'true' if index is synced with packet storage Optional
job_config.indexing.size_limit <number> Max number of bytes for this index Optional
job_config.indexing.dpi_enabled <boolean> 'true' if dpi taggging is enabled Optional
job_config.indexing.time_limit <number> Max time this index can exist Optional
job_config.interface_description <string> Description of interface on which job is collecting packet data Optional
job_config.requested_end_time <timestamp> Specific time at which job is to end Optional; Seconds since January 1, 1970
job_config.snap_length <number> Packet snap length for this capture job Optional; Default is 65535
job_config.interface_name <string> Name of interface on which job is collecting packet data

job_index_info

  • JSON
{
  "status": string,
  "start_time": timestamp-hp,
  "end_time": timestamp-hp,
  "synced_with_job": boolean,
  "size": number
}

Example:
{
  "status": "RUNNING", 
  "start_time": 1354054943377117000, 
  "end_time": 1354657734848519000, 
  "synced_with_job": false, 
  "size": 3065578
}
Property Name Type Description Notes
job_index_info <object>
job_index_info.status <string> Running state of an index Values: OK, RUNNING, ERROR
job_index_info.start_time <timestamp-hp> Start time of the index
job_index_info.end_time <timestamp-hp> End time of the index
job_index_info.synced_with_job <boolean> 'true' if index is synced with packet storage Optional
job_index_info.size <number> Size of index on the OS file system Optional

job_status

Status information for a job

  • JSON
{
  "state": string,
  "packet_size": number,
  "packet_start_time": timestamp-hp,
  "packet_end_time": timestamp-hp
}

Example:
{
  "packet_end_time": 1345512749000000000, 
  "state": "STOPPED", 
  "packet_start_time": 1344456875000000000, 
  "packet_size": 44781772
}
Property Name Type Description Notes
job_status <object> Status information for a job
job_status.state <string> Running state of a capture job Values: ACTIVE, RUNNING, STOPPED, UNKNOWN
job_status.packet_size <number> Size of this job in packet storage
job_status.packet_start_time <timestamp-hp> First packet timestamp for this job
job_status.packet_end_time <timestamp-hp> Last packet timestamp for this job

layer4_mapping

  • JSON
{
  "override": boolean,
  "priority": number,
  "hosts": [
    string
  ],
  "name": string,
  "ports": [
    {
      "port_range": string,
      "protocol": string
    }
  ]
}

Example:
{
  "override": true, 
  "priority": 0, 
  "hosts": [
    "192.168.140.18"
  ], 
  "name": "My_server", 
  "ports": [
    {
      "port_range": "99", 
      "protocol": "TCP"
    }, 
    {
      "port_range": "15", 
      "protocol": "TCP"
    }
  ]
}
Property Name Type Description Notes
layer4_mapping <object>
layer4_mapping.override <boolean> If true this L4 mapping rule overrides the L7 applications Optional
layer4_mapping.priority <number> Layer4 mapping priority: smaller values have higher priority Optional
layer4_mapping.hosts <array of <string>> List of hosts: each host can be defined as 'address[/mask]'
layer4_mapping.hosts[host] <string>
layer4_mapping.name <string> Layer4 mapping name Optional
layer4_mapping.ports <array of <object>> List of port range definitions for this layer4 mapping
layer4_mapping.ports[port_range] <object>
layer4_mapping.ports[port_range].
port_range
<string> Port range definition: portA[-portB]
layer4_mapping.ports[port_range].
protocol
<string> Values: TCP, UDP

notification_settings

Configuration for email notifications

  • JSON
{
  "mail": {
    "smtp_server_port": number,
    "smtp_server_address": string,
    "to_address": string,
    "from_address": string
  },
  "trap": {
    "receivers": [
      {
        "username": string,
        "engine_id": string,
        "address": string,
        "community": string,
        "privacy": {
          "protocol": string,
          "passphrase": string
        },
        "authentication": {
          "protocol": string,
          "passphrase": string
        },
        "version": string,
        "security_level": string
      }
    ]
  },
  "notifier": {
    "notifications": [
      {
        "enabled": boolean,
        "id": string,
        "description": string
      }
    ],
    "enabled": boolean,
    "trap_notification_enabled": boolean
  }
}

Example:
{
  "mail": {
    "smtp_server_port": 25, 
    "to_address": "admin@foo.com", 
    "smtp_server_address": "smtp.foo.com", 
    "from_address": "shark@foo.com"
  }, 
  "trap": {
    "receivers": [
      {
        "version": "V1", 
        "community": "public", 
        "address": "1.2.3.4"
      }, 
      {
        "version": "V1", 
        "community": "public", 
        "address": "1.2.3.5"
      }
    ]
  }, 
  "notifier": {
    "notifications": [
      {
        "enabled": true, 
        "id": "m_clock_monitor.time_shift", 
        "description": "Notify every time the system clock is modified"
      }, 
      {
        "enabled": true, 
        "id": "m_link_state_monitor.link_up_down", 
        "description": "Notify when link up/down state changes"
      }, 
      {
        "enabled": true, 
        "id": "m_reboot_monitor.reboot", 
        "description": "Notify every time this Shark appliance is rebooted"
      }, 
      {
        "enabled": true, 
        "id": "m_sa_events.job_change", 
        "description": "Notify whenever there is job status change"
      }, 
      {
        "enabled": true, 
        "id": "m_sa_events.disk_pressure", 
        "description": "Notify whenever there is disk pressure event"
      }, 
      {
        "enabled": true, 
        "id": "m_sa_events.memory_pressure", 
        "description": "Notify whenever there is memory pressure event"
      }, 
      {
        "enabled": true, 
        "id": "m_sa_events.watch_events", 
        "description": "Notify whenever there is watch event"
      }, 
      {
        "enabled": true, 
        "id": "m_sa_events.view_killed_events", 
        "description": "Notify whenever there is a view killed"
      }, 
      {
        "enabled": true, 
        "id": "m_storage_monitor.bad_storage", 
        "description": "Notify whenever there is a change in the packet storage status"
      }
    ], 
    "enabled": true, 
    "trap_notification_enabled": true
  }
}
Property Name Type Description Notes
notification_settings <object> Configuration for email notifications
notification_settings.mail <object> SMTP settings for email notifications Optional
notification_settings.mail.
smtp_server_port
<number> SMTP server port (defaults to 25) Optional
notification_settings.mail.
smtp_server_address
<string> SMTP server IP address
notification_settings.mail.to_address <string> SMTP 'to' address
notification_settings.mail.from_address <string> SMTP 'from' address
notification_settings.trap <object> Trap notification settings Optional
notification_settings.trap.receivers <array of <object>> A list of trap receivers
notification_settings.trap.receivers
[trap]
<object> SNMP trap receiver configuration
notification_settings.trap.receivers
[trap].username
<string> (Required for V3) SNMP user name Optional
notification_settings.trap.receivers
[trap].engine_id
<string> (Required for V3) Unique ID associated with the trap receiver Optional
notification_settings.trap.receivers
[trap].address
<string> Receiver address (hostname or IP address)
notification_settings.trap.receivers
[trap].community
<string> (Required for V1 and V2C) SNMP community string Optional
notification_settings.trap.receivers
[trap].privacy
<object> (Required with SNMP privacy) SNMP privacy information Optional
notification_settings.trap.receivers
[trap].privacy.protocol
<string> Privacy protocol Values: DES, AES
notification_settings.trap.receivers
[trap].privacy.passphrase
<string> Privacy passphrase (must be at least 8 characters long)
notification_settings.trap.receivers
[trap].authentication
<object> (Required with SNMP authentication) SNMP authentication information Optional
notification_settings.trap.receivers
[trap].authentication.protocol
<string> Authentication protocol Values: MD5, SHA
notification_settings.trap.receivers
[trap].authentication.passphrase
<string> Authentication passphrase (must be at least 8 characters long)
notification_settings.trap.receivers
[trap].version
<string> SNMP version Values: V1, V2C, V3
notification_settings.trap.receivers
[trap].security_level
<string> (Required for V3) SNMP security level Optional; Values: NO_AUTH_NO_PRIVACY, AUTH_NO_PRIVACY, AUTH_PRIVACY
notification_settings.notifier <object> Notification settings
notification_settings.notifier.
notifications
<array of <object>> A list of notification descriptors
notification_settings.notifier.
notifications[notification]
<object> A single notification descriptor
notification_settings.notifier.
notifications[notification].enabled
<boolean> 'true' if notification is enabled, 'false' otherwise
notification_settings.notifier.
notifications[notification].id
<string> Unique ID for the notification (assigned by the system)
notification_settings.notifier.
notifications[notification].
description
<string> (Optional) Description for the notification Optional
notification_settings.notifier.enabled <boolean> 'true' if SMTP notifications are enabled, 'false' otherwise
notification_settings.notifier.
trap_notification_enabled
<boolean> 'true' if trap notifications are enabled, 'false' otherwise Optional

port_group

  • JSON
{
  "priority": number,
  "name": string,
  "ports": [
    {
      "port_range": string,
      "protocol": string
    }
  ]
}

Example:
{
  "priority": 0, 
  "name": "Web", 
  "ports": [
    {
      "port_range": "80", 
      "protocol": "TCP"
    }, 
    {
      "port_range": "8080", 
      "protocol": "TCP"
    }, 
    {
      "port_range": "443", 
      "protocol": "TCP"
    }
  ]
}
Property Name Type Description Notes
port_group <object>
port_group.priority <number> Port group priority: smaller values have higher priority Optional
port_group.name <string> Port group name Optional
port_group.ports <array of <object>> List of port range definitions for this group
port_group.ports[port_range] <object>
port_group.ports[port_range].port_range <string> Port range definition: portA[-portB]
port_group.ports[port_range].protocol <string> Values: TCP, UDP

port_name

  • JSON
{
  "udp": string,
  "port": number,
  "tcp": string
}

Example:
{
  "udp": "http", 
  "port": 80, 
  "tcp": "http"
}
Property Name Type Description Notes
port_name <object>
port_name.udp <string> UDP port name for this port number Optional
port_name.port <number> Transport port number Optional
port_name.tcp <string> TCP port name for this port number Optional

profilerexport_settings

Configuration of the Profiler Export

  • JSON
{
  "profilers": [
    {
      "status": {
        "state": string,
        "cause": string
      },
      "sync": {
        "sync_port_groups": boolean,
        "sync_layer4_mappings": boolean,
        "sync_custom_applications": boolean,
        "sync_port_names": boolean
      },
      "address": string
    }
  ],
  "enabled": boolean,
  "adapter_ports": [
    {
      "bpf_filter": string,
      "voip_enabled": boolean,
      "name": string,
      "dpi_enabled": boolean,
      "enabled": boolean,
      "description": string
    }
  ],
  "valid_license": boolean
}

Example:
{
  "valid_license": true, 
  "enabled": true, 
  "adapter_ports": [
    {
      "enabled": true, 
      "voip_enabled": true, 
      "name": "tc0", 
      "description": "TurboCap 1Gb device no.0"
    }, 
    {
      "enabled": true, 
      "bpf_filter": "tcp", 
      "voip_enabled": false, 
      "name": "tc1", 
      "description": "TurboCap 1Gb device no.1"
    }
  ], 
  "profilers": [
    {
      "status": {
        "state": "ERROR", 
        "cause": "Host not found: myprofiler.mydomain.com"
      }, 
      "address": "myprofiler.mydomain.com"
    }, 
    {
      "status": {
        "state": "OK"
      }, 
      "address": "myprofiler1.mydomain.com"
    }
  ]
}
Property Name Type Description Notes
profilerexport_settings <object> Configuration of the Profiler Export
profilerexport_settings.profilers <array of <object>> List of profilers
profilerexport_settings.profilers
[profiler]
<object> Description of a single profiler
profilerexport_settings.profilers
[profiler].status
<object> Information on a profiler connection Optional
profilerexport_settings.profilers
[profiler].status.state
<string> Connection state of a profiler Values: OK, ERROR, DISABLED
profilerexport_settings.profilers
[profiler].status.cause
<string> In case of connection error this field contains the cause Optional
profilerexport_settings.profilers
[profiler].sync
<object> Optional
profilerexport_settings.profilers
[profiler].sync.sync_port_groups
<boolean>
profilerexport_settings.profilers
[profiler].sync.sync_layer4_mappings
<boolean>
profilerexport_settings.profilers
[profiler].sync.
sync_custom_applications
<boolean>
profilerexport_settings.profilers
[profiler].sync.sync_port_names
<boolean>
profilerexport_settings.profilers
[profiler].address
<string> Address of a profiler, either IP or full qualified name
profilerexport_settings.enabled <boolean> Enable/disable the Profiler Export
profilerexport_settings.adapter_ports <array of <object>> List of the capture physical ports installed on the appliance
profilerexport_settings.adapter_ports
[adapter_port]
<object> Description of a single physical capture port
profilerexport_settings.adapter_ports
[adapter_port].bpf_filter
<string> BPF filter applied on the traffic captured on the capture port Optional
profilerexport_settings.adapter_ports
[adapter_port].voip_enabled
<boolean> Enable/disable the export of VoIP metrics to profiler
profilerexport_settings.adapter_ports
[adapter_port].name
<string> Name of the capture port, unique on the appliance
profilerexport_settings.adapter_ports
[adapter_port].dpi_enabled
<boolean> Enable/disable the export of Application tags to profiler Optional
profilerexport_settings.adapter_ports
[adapter_port].enabled
<boolean> Enable/disable the export on the capture port
profilerexport_settings.adapter_ports
[adapter_port].description
<string> Description of the capture port Optional
profilerexport_settings.valid_license <boolean> Optional

snmp_settings

SNMP configuration for this Shark

  • JSON
{
  "username": string,
  "version": string,
  "privacy": {
    "protocol": string,
    "passphrase": string
  },
  "enabled": boolean,
  "community": string,
  "authentication": {
    "protocol": string,
    "passphrase": string
  },
  "contact": string,
  "location": string,
  "security_level": string,
  "description": string
}

Example:
{
  "username": "admin", 
  "description": "shark", 
  "enabled": true, 
  "contact": "admin@foo.com", 
  "authentication": {
    "protocol": "SHA", 
    "passphrase": "passphrase123"
  }, 
  "version": "V3", 
  "location": "6th Floor West", 
  "security_level": "AUTH_NO_PRIVACY"
}
Property Name Type Description Notes
snmp_settings <object> SNMP configuration for this Shark
snmp_settings.username <string> (Required for V3) SNMP user name Optional
snmp_settings.version <string> SNMP version Values: V1, V2C, V3
snmp_settings.privacy <object> (Required with SNMP privacy) SNMP privacy information Optional
snmp_settings.privacy.protocol <string> Privacy protocol Values: DES, AES
snmp_settings.privacy.passphrase <string> Privacy passphrase (must be at least 8 characters long)
snmp_settings.enabled <boolean> 'true' if SNMP is enabled, 'false' otherwise
snmp_settings.community <string> (Required for V1 and V2C) SNMP community string Optional
snmp_settings.authentication <object> (Required with SNMP authentication) SNMP authentication information Optional
snmp_settings.authentication.protocol <string> Authentication protocol Values: MD5, SHA
snmp_settings.authentication.passphrase <string> Authentication passphrase (must be at least 8 characters long)
snmp_settings.contact <string> (Optional) SNMP contact string Optional
snmp_settings.location <string> (Optional) SNMP location string Optional
snmp_settings.security_level <string> (Required for V3) SNMP security level Optional; Values: NO_AUTH_NO_PRIVACY, AUTH_NO_PRIVACY, AUTH_PRIVACY
snmp_settings.description <string> (Optional) SNMP description string Optional

timestamp-hp

High precision timestamp value.

Since REST API clients may have very different needs and capabilitities when it comes to handling high-precision timestamps, the API supports multiple encodings for timestamps with higher precision than a seconds.

The format of a high-precision timestamp value in a request or response object is defined by three attributes: <units>.<precision> <type>

  • units: s, ms, us, ns
  • precision: .ms, .us, .ns (optional)
  • type: string, number (only relevant for JSON)

Here are a few examples:

Format Value XML JSON
s string 1336086278.462862235 1336086278 "1336086278"
s number 1336086278.462862235 1336086278 1336086278
s.ns string 1336086278.462862235 1336086278.462862235 "1336086278.462862235"
s.ns number 1336086278.462862235 1336086278.462862235 1336086278.462862235
s.ms string 1336086278.462862235 1336086278.462 "1336086278.462"
ns string 1336086278.462862235 1336086278462862235 "1336086278462862235"
ns number 1336086278.462862235 1336086278462862235 1336086278462862235

To select a specific timestamp format to be used in the request and response body for any REST API call, the client must indicate the desired format in the X-RBT-High-Precision-Timestamp-Format HTTP Header. The same value applies to both the request and response structures.

For example, to select nanosecond units formatted as a string (for JSON), the header would be specified as X-RBT-High-Precision-Timestamp-Format: ns string.

If the header is not supplied by the client, the default encoding is ns number.

The selection of the type "string" versus "number" is only relevant for JSON (since in XML everything is a string), and the choice depends on the client's particular characteristics. For example, JavaScript can only represent a 53-bit integer value before losing precision. That corresponds to roughly microsecond resolution, so it is not possible to store "ns number" values in a JavaScript integer with full precision, hence a a JavaScript client that requires sub-microsecond precision must use a string encoding and parse the number manually. However, since Python has no such constraints, the easiest encoding to work with would be a nanosecond number.

user

Information about a user account

  • JSON
{
  "is_locked": boolean,
  "can_be_locked": boolean,
  "is_admin": boolean,
  "name": string,
  "groups": [
    string
  ]
}

Example:
{
  "is_locked": false, 
  "can_be_locked": false, 
  "is_admin": true, 
  "name": "admin", 
  "groups": [
    "Administrators"
  ]
}
Property Name Type Description Notes
user <object> Information about a user account
user.is_locked <boolean> Indication if the user account is locked
user.can_be_locked <boolean> Indication if the user account can be locked
user.is_admin <boolean> Indication if the user is an administrator
user.name <string> User name
user.groups <array of <string>> List of groups of which the user is a member
user.groups[group] <string>

view

View configuration

  • JSON
{
  "info": {
    "description": string,
    "title": string
  },
  "processors": [
    {
      "keys": [
        {
          "default_value": string,
          "field": string,
          "id": string
        }
      ],
      "metrics": [
        {
          "default_value": string,
          "field": string,
          "operation": string,
          "id": string
        }
      ],
      "id": string,
      "filters": [ filter ],
      "outputs": [
        {
          "fields": [
            {
              "operation": string,
              "id": string,
              "description": string
            }
          ],
          "id": string
        }
      ]
    }
  ],
  "parameters": {
    "sampling_time_msec": number,
    "autoclose_idle_timeout_msec": number,
    "retention_time_msec": number
  },
  "watches": [ watch ],
  "client_config": string,
  "input_source": {
    "disable_index": boolean,
    "path": string,
    "filters": [ filter ]
  }
}

Example:
{
  "info": {
    "description": "Network Usage by Traffic Type", 
    "title": "Network Usage by Traffic Type"
  }, 
  "processors": [
    {
      "keys": [
        {
          "field": "generic.application", 
          "id": "c1"
        }
      ], 
      "metrics": [
        {
          "field": "generic.bits", 
          "operation": "TIME_AVG", 
          "id": "c2"
        }, 
        {
          "field": "generic.bits", 
          "operation": "SUM", 
          "id": "c3"
        }
      ], 
      "id": "PUID_Overview_Grid", 
      "filters": [], 
      "outputs": [
        {
          "fields": [
            {
              "id": "c1", 
              "description": "Traffic Type"
            }, 
            {
              "id": "c2", 
              "description": "Bits"
            }
          ], 
          "id": "OUID_Output_Over_Time"
        }, 
        {
          "fields": [
            {
              "id": "c1", 
              "description": "Traffic Type"
            }, 
            {
              "id": "c3", 
              "description": "Bits"
            }
          ], 
          "id": "OUID_Output_Aggregated"
        }
      ]
    }
  ], 
  "parameters": {
    "sampling_time_msec": 1000, 
    "retention_time_msec": 86400000
  }, 
  "watches": [], 
  "client_config": "<CACEPilotConfiguration xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"..\\..\\..\\..\\..\\specs\\XML\\PilotConfig.xsd\">\n\t<Version Client=\"3.6\"/>\n\t<Info>\n\t\t<Title>Network Usage by Traffic Type</Title>\n\t\t<Description>Network Usage by Traffic Type</Description>\n\t\t<Info>This view gives a great overview of how the network is utilized by the different protocols and applications. It breaks the network traffic into the following categories: Routing, Web, Email, Data Transfer, SSH/Telnet, MS networking, SNMP, VPN/Tunnel, Remote-Desktop, VoIP, Database, IM.</Info>\n\t\t<Notes Subject=\"Warning\">The protocol transported by TCP or UDP are discovered by a port lookup, not by payload inspection. This makes this view very fast and suitable for high speed networks. On the other side, it could cause false positives. For example, all the traffic on TCP port 80 will be reported as &quot;Web&quot;.</Notes>\n\t</Info>\n\t<DisplaysData>\n\t\t<DisplayData DisplayUId=\"DUID_Over_Time\">\n\t\t\t<DataSources>\n\t\t\t\t<DataSource OutputUId=\"OUID_Output_Over_Time\" RefreshInterval=\"1000\"/>\n\t\t\t</DataSources>\n\t\t</DisplayData>\n\t\t<DisplayData DisplayUId=\"DUID_Total\">\n\t\t\t<DataSources>\n\t\t\t\t<DataSource OutputUId=\"OUID_Output_Aggregated\" RefreshInterval=\"1000\"/>\n\t\t\t</DataSources>\n\t\t</DisplayData>\n\t\t<DisplayData DisplayUId=\"DUID_Total_Pie\">\n\t\t\t<DataSources>\n\t\t\t\t<DataSource OutputUId=\"OUID_Output_Aggregated\" RefreshInterval=\"1000\"/>\n\t\t\t</DataSources>\n\t\t</DisplayData>\n\t</DisplaysData>\n\t<DisplaysUI>\n\t\t<DisplayUI ComponentName=\"StripChart\" DisplayUId=\"DUID_Over_Time\">\n\t\t\t<DisplayProperties>\n\t\t\t\t<Property Name=\"Title\" Value=\"Bits Over Time\"/>\n\t\t\t\t<Property Name=\"ColorRule\" Value=\"Dimension\"/>\n\t\t\t\t<Property Name=\"ColorParameter\" Value=\"x0\"/>\n\t\t\t\t<Property Name=\"TimeFormatStr\" Value=\"HH:mm:ss \"/>\n\t\t\t\t<Property Name=\"LegendDimension\" Value=\"113\"/>\n\t\t\t\t<Property Name=\"YAxisLabel\" Value=\"Bits/s\"/>\n\t\t\t</DisplayProperties>\n\t\t\t<Help>\n\t\t\t\t<Text>Amount of bits per second for each type of network traffic, charted over time.</Text>\n\t\t\t</Help>\n\t\t</DisplayUI>\n\t\t<DisplayUI ComponentName=\"SingleBars\" DisplayUId=\"DUID_Total\">\n\t\t\t<DisplayProperties>\n\t\t\t\t<Property Name=\"Title\" Value=\"Total Bits\"/>\n\t\t\t\t<Property Name=\"ShowLegend\" Value=\"False\"/>\n\t\t\t\t<Property Name=\"LegendDimension\" Value=\"105\"/>\n\t\t\t\t<Property Name=\"YAxisLabel\" Value=\"Total Bits\"/>\n\t\t\t\t<Property Name=\"PxFromBottomBorder\" Value=\"60\"/>\n\t\t\t\t<Property Name=\"UserPageSize\" Value=\"30\"/>\n\t\t\t\t<Property Name=\"ColorRule\" Value=\"Dimension\"/>\n\t\t\t\t<Property Name=\"ColorParameter\" Value=\"x0\"/>\n\t\t\t</DisplayProperties>\n\t\t\t<Help Visible=\"False\">\n\t\t\t\t<Text>Total network usage for the different types of network traffic, during the visualized time interval.</Text>\n\t\t\t</Help>\n\t\t</DisplayUI>\n\t\t<DisplayUI ComponentName=\"Pie\" DisplayUId=\"DUID_Total_Pie\">\n\t\t\t<DisplayProperties>\n\t\t\t\t<Property Name=\"Title\" Value=\"Relative Network Usage\"/>\n\t\t\t\t<Property Name=\"LegendPosition\" Value=\"Right\"/>\n\t\t\t\t<Property Name=\"PieLabelType\" Value=\"Percentage\"/>\n\t\t\t\t<Property Name=\"ColorParameter\" Value=\"x0\"/>\n\t\t\t\t<Property Name=\"ColorRule\" Value=\"Dimension\"/>\n\t\t\t</DisplayProperties>\n\t\t\t<Help>\n\t\t\t\t<Text>Relative network usage for the different types of network traffic, during the visualized time interval.</Text>\n\t\t\t</Help>\n\t\t</DisplayUI>\n\t\t<DisplaysUILayout>\n\t\t\t<dotnetbarlayout version=\"6\" zorder=\"3,4,1,2\">\n\t\t\t\t<documents>\n\t\t\t\t\t<dockcontainer h=\"0\" orientation=\"1\" w=\"0\">\n\t\t\t\t\t\t<barcontainer h=\"311\" w=\"978\">\n\t\t\t\t\t\t\t<bar dockline=\"0\" dockoffset=\"0\" dockside=\"5\" layout=\"2\" name=\"BaseBar\" seldocktab=\"0\" state=\"2\" visible=\"true\">\n\t\t\t\t\t\t\t\t<items>\n\t\t\t\t\t\t\t\t\t<item name=\"DUID_Over_Time\" origBar=\"\" origPos=\"-1\" pos=\"0\"/>\n\t\t\t\t\t\t\t\t</items>\n\t\t\t\t\t\t\t</bar>\n\t\t\t\t\t\t</barcontainer>\n\t\t\t\t\t\t<dockcontainer h=\"311\" orientation=\"0\" w=\"978\">\n\t\t\t\t\t\t\t<barcontainer h=\"279\" w=\"487\">\n\t\t\t\t\t\t\t\t<bar ahanim=\"0\" autocaptionsync=\"true\" cancust=\"false\" candockbottom=\"false\" candockdoc=\"true\" candockleft=\"false\" candockright=\"false\" candocktab=\"true\" candocktop=\"false\" canhide=\"false\" canundock=\"false\" custom=\"true\" dockline=\"0\" dockside=\"5\" eqbutton=\"false\" fontemsize=\"8.25\" fontname=\"Microsoft Sans Serif\" fontstyle=\"0\" grabhandle=\"0\" imagesize=\"0\" itemsp=\"0\" layout=\"2\" menubar=\"false\" name=\"DUID_Total\" seldocktab=\"0\" showtab=\"true\" state=\"2\" stretch=\"true\" style=\"4\" tabalign=\"2\" tabnav=\"true\" text=\"Total Bits\" themes=\"false\" visible=\"true\" wrapdock=\"false\" wrapfloat=\"true\">\n\t\t\t\t\t\t\t\t\t<items>\n\t\t\t\t\t\t\t\t\t\t<item name=\"DUID_Total\" origBar=\"\" origPos=\"-1\" pos=\"0\"/>\n\t\t\t\t\t\t\t\t\t</items>\n\t\t\t\t\t\t\t\t</bar>\n\t\t\t\t\t\t\t</barcontainer>\n\t\t\t\t\t\t\t<barcontainer h=\"279\" w=\"488\">\n\t\t\t\t\t\t\t\t<bar ahanim=\"0\" autocaptionsync=\"true\" cancust=\"false\" candockbottom=\"false\" candockdoc=\"true\" candockleft=\"false\" candockright=\"false\" candocktab=\"true\" candocktop=\"false\" canhide=\"false\" canundock=\"false\" custom=\"true\" dockline=\"0\" dockside=\"5\" eqbutton=\"false\" fontemsize=\"8.25\" fontname=\"Microsoft Sans Serif\" fontstyle=\"0\" grabhandle=\"0\" imagesize=\"0\" itemsp=\"0\" layout=\"2\" menubar=\"false\" name=\"DUID_Total_Pie\" seldocktab=\"0\" showtab=\"true\" state=\"2\" stretch=\"true\" style=\"4\" tabalign=\"2\" tabnav=\"true\" text=\"Relative Network Usage\" themes=\"false\" visible=\"true\" wrapdock=\"false\" wrapfloat=\"true\">\n\t\t\t\t\t\t\t\t\t<items>\n\t\t\t\t\t\t\t\t\t\t<item name=\"DUID_Total_Pie\" origBar=\"\" origPos=\"-1\" pos=\"0\"/>\n\t\t\t\t\t\t\t\t\t</items>\n\t\t\t\t\t\t\t\t</bar>\n\t\t\t\t\t\t\t</barcontainer>\n\t\t\t\t\t\t</dockcontainer>\n\t\t\t\t\t</dockcontainer>\n\t\t\t\t</documents>\n\t\t\t\t<bars/>\n\t\t\t</dotnetbarlayout>\n\t\t</DisplaysUILayout>\n\t</DisplaysUI>\n</CACEPilotConfiguration>\n", 
  "input_source": {
    "disable_index": false, 
    "path": "fs/admin/pcap/noon.cap", 
    "filters": [
      {
        "type": "SHARK", 
        "value": "generic.frame.valid = true"
      }, 
      {
        "type": "DECRYPT", 
        "value": "true"
      }
    ]
  }
}
Property Name Type Description Notes
view <object> View configuration
view.info <object> View information section Optional
view.info.description <string> View description Optional
view.info.title <string> View title Optional
view.processors <array of <object>> Processors configuration Minimum: 1
view.processors[processor] <object> Processor configuration
view.processors[processor].keys <array of <object>> List of fields that will act as keys in this configuration
view.processors[processor].keys[key] <object>
view.processors[processor].keys[key].
default_value
<string> Default value, if needed Optional
view.processors[processor].keys[key].
field
<string> Field name according to the Shark syntax
view.processors[processor].keys[key].id <string> Alias that can be given to the field, used as identifier in the output configuration
view.processors[processor].metrics <array of <object>> List of fields that will act as metrics in this configuration
view.processors[processor].metrics
[metric]
<object>
view.processors[processor].metrics
[metric].default_value
<string> Default value, if needed Optional
view.processors[processor].metrics
[metric].field
<string> Field name according to the Shark syntax
view.processors[processor].metrics
[metric].operation
<string> Calculation type Values: NONE, SUM, MAX, MIN, AVG, TIME_AVG, REPLACE
view.processors[processor].metrics
[metric].id
<string> Alias that can be given to the field, used as identifier in the output configuration
view.processors[processor].id <string> Processor Id
view.processors[processor].filters <array of <filter>> Filter list for the processor
view.processors[processor].filters
[filter]
<filter> Instance of a <filter>
view.processors[processor].outputs <array of <object>> Output list for the processor
view.processors[processor].outputs
[output]
<object>
view.processors[processor].outputs
[output].fields
<array of <object>> List of requested fields in the output
view.processors[processor].outputs
[output].fields[field]
<object>
view.processors[processor].outputs
[output].fields[field].operation
<string> Further output operation, if needed. Notice that using this might reduce performance. Optional; Default is NONE; Values: NONE, AVG, COUNT, MAX, MIN, SUM
view.processors[processor].outputs
[output].fields[field].id
<string> Id of the field. This is the same of the processor configuration.
view.processors[processor].outputs
[output].fields[field].description
<string> Description, if needed Optional
view.processors[processor].outputs
[output].id
<string> Output Id
view.parameters <object> View main configuration parameters section
view.parameters.sampling_time_msec <number> View data sampling time Optional; Default is 1000
view.parameters.
autoclose_idle_timeout_msec
<number> Autoclose timeout: if set, the view will be closed if it is not accessed for a period of time equal to the timeout value Optional; Default is 0
view.parameters.retention_time_msec <number> Data retention time: data collected for a view will be deleted after the retention time elapsed Optional; Default is 86400000
view.watches <array of <watch>> Watch list
view.watches[watch] <watch> Instance of a <watch>
view.client_config <string> Client-specific section, not used by Shark Optional; Encoded as CDATA in XML
view.input_source <object> Input source configuration
view.input_source.disable_index <boolean> If true, the source will not be allowed to use an index to speed up the processing Optional
view.input_source.path <string> Path of the source to open Specifies a job, clip, file or live device. Must start with the source type, e.g. fs/admin/trace.pcap or interfaces/tc0
view.input_source.filters <array of <filter>> List or filters for this input
view.input_source.filters[filter] <filter> Instance of a <filter>

watch

Watch configuration

  • JSON
{
  "info": {
    "group": string,
    "name": string,
    "description": string
  },
  "conversation_dimensions": [
    [
      string
    ]
  ],
  "severity": number,
  "triggers": [
    {
      "duration_info": {
        "duration_ms": number,
        "duration_type": string
      },
      "uid": string,
      "dimension_restrictions": dimension_restrictions,
      "repetition_info": {
        "number_of_times": number
      },
      "condition_operator": string,
      "bool_operator": string,
      "conditions": [
        {
          "field": string,
          "condition_info": {
            "aggregation_type": string,
            "check_type": string,
            "value": string,
            "second_value": string
          }
        }
      ]
    }
  ],
  "watch_uid": string,
  "enabled": boolean,
  "validity": {
    "to": {
      "value_type": string,
      "value_us": number
    },
    "from": {
      "value_type": string,
      "value_us": number
    }
  },
  "actions": {
    "actions": [
      {
        "type": string,
        "uid": string,
        "parameters": [
          {
            "name": string,
            "value": string,
            "custom": boolean
          }
        ],
        "side": string
      }
    ],
    "fired_triggers": {
      "bool_operator": string,
      "triggering_mode": string,
      "triggers": [
        string
      ]
    }
  },
  "timing": {
    "sampling_ms": number,
    "time_analysis_mode": string,
    "from": string,
    "interval_ms": number
  },
  "output_uid": string
}

Example:
{
  "info": {
    "name": "Watch 1"
  }, 
  "severity": 6, 
  "triggers": [
    {
      "condition_operator": "AND", 
      "conditions": [
        {
          "field": "c2", 
          "condition_info": {
            "aggregation_type": "VALUE", 
            "value": "0", 
            "check_type": "GREATER"
          }
        }
      ], 
      "bool_operator": "OR", 
      "dimension_restrictions": {
        "sub_restrictions": [], 
        "restrictions": [
          {
            "field": "c1", 
            "value": "Web"
          }
        ], 
        "bool_operator": "OR"
      }, 
      "uid": "Trigger 1"
    }
  ], 
  "watch_uid": "watch_1", 
  "enabled": true, 
  "actions": {
    "fired_triggers": {
      "bool_operator": "AND", 
      "triggering_mode": "LEADINGEDGE", 
      "triggers": [
        "Trigger 1"
      ]
    }, 
    "actions": [
      {
        "type": "InternalDBLog", 
        "uid": "Action 1", 
        "parameters": [], 
        "side": "SERVER"
      }
    ]
  }, 
  "timing": {
    "from": "NOW", 
    "time_analysis_mode": "SAMPLE_BY_SAMPLE", 
    "interval_ms": 1000
  }, 
  "output_uid": "OUID_Output_Over_Time"
}
Property Name Type Description Notes
watch <object> Watch configuration
watch.info <object> Watch info section
watch.info.group <string> Watch group. Can be used to organize the watches. Optional
watch.info.name <string> Watch human-friendly name
watch.info.description <string> Watch human-friendly description Optional
watch.conversation_dimensions <array of <array of <string>>> This is used when the watch is supposed to treat two dimensions as if they are part of a single connection. For example, the source and destination ip addresses of a conversation ring. The watch will detect a connection and include the traffic coming from both the senders in a single value to check. Optional
watch.conversation_dimensions
[conversation_group]
<array of <string>>
watch.conversation_dimensions
[conversation_group][field_name]
<string>
watch.severity <number> Severity, specified as an integer number with with syslog convention Optional; Default is 5
watch.triggers <array of <object>> List of the events that are watched. An event is something like "bandwdth bigger than 1000" or "packets for host 1.2.3.4 smaller than 10 for more than a minute".
watch.triggers[trigger] <object>
watch.triggers[trigger].duration_info <object> Information about the amount of time the value crosses the threshold before the event is triggered. If this field is not present, the server event will be triggered after the first sampling interval in which the value is beyond the threshold. The duration must be a multiple of the view sampling time, otherwise the server will return an error. Optional
watch.triggers[trigger].duration_info.
duration_ms
<number> The duration time, in milliseconds. This must be a multiple of the view sampling time.
watch.triggers[trigger].duration_info.
duration_type
<string> Type of duration Values: NOT_INITIALIZED, MORE_THAN, EQUALS
watch.triggers[trigger].uid <string> The unique identifier of the event
watch.triggers[trigger].
dimension_restrictions
<dimension_restrictions> The list of dimension restrictions
watch.triggers[trigger].repetition_info <object> Information about how many times the treshold needs to be crossed in order for the event to become signaled Optional
watch.triggers[trigger].repetition_info.
number_of_times
<number> How many times the treshold needs to be crossed in order for the event to become signaled
watch.triggers[trigger].
condition_operator
<string> The boolean operation to apply: "And" or "Or" Values: NOT_INITIALIZED, AND, OR
watch.triggers[trigger].bool_operator <string> The boolean operation to apply: "And" or "Or" Values: NOT_INITIALIZED, AND, OR
watch.triggers[trigger].conditions <array of <object>> The list of conditions that will have to be validated in order for the event to be satisfied. If multiple conditions are present, the event is satisfied according to the operation value.
watch.triggers[trigger].conditions
[condition]
<object>
watch.triggers[trigger].conditions
[condition].field
<string> The numeric (or non-numeric) value that will be checked against the threshold. Non numeric values can be checked with the Equal, NotEqual and Exists operators. NOTE: the field name refers to the database column name (e.g. c2 or c5) (the base number is 1).
watch.triggers[trigger].conditions
[condition].condition_info
<object> Generic information about this threshold
watch.triggers[trigger].conditions
[condition].condition_info.
aggregation_type
<string> The type of threshold value Values: VALUE, PERCENTAGE, SUMVALUE, SUMPERCENTAGE, COUNT
watch.triggers[trigger].conditions
[condition].condition_info.check_type
<string> The type of check to perform Values: EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL, INSIDE_RANGE, OUTSIDE_RANGE, EXISTS, TOPN_CHANGED
watch.triggers[trigger].conditions
[condition].condition_info.value
<string> The threshold value Optional
watch.triggers[trigger].conditions
[condition].condition_info.
second_value
<string> Second threshold value, when supported (e.g. Inside/Outside range). Optional
watch.watch_uid <string> Watch Id
watch.enabled <boolean> True if enabled
watch.validity <object> Timing information for the watch. It specifies when the watch must be considered valid and keep under control. Optional
watch.validity.to <object> Watch validity end time. If not specified, End time will be used.
watch.validity.to.value_type <string> Validity type Values: DEFAULT, NOT_SPECIFIED, START, END, RELATIVE, ABSOLUTE
watch.validity.to.value_us <number> Validity value, can be expressed as the absolute timestamp or relative time span depending on the type
watch.validity.from <object> Watch validity start time. If not specified, Start time will be used.
watch.validity.from.value_type <string> Validity type Values: DEFAULT, NOT_SPECIFIED, START, END, RELATIVE, ABSOLUTE
watch.validity.from.value_us <number> Validity value, can be expressed as the absolute timestamp or relative time span depending on the type
watch.actions <object> The actions to be performed when one or more events are signaled. Action examples are: start dumping to disk, create a report, start a view, etc.
watch.actions.actions <array of <object>> Action list
watch.actions.actions[action] <object>
watch.actions.actions[action].type <string> The type of action. This must correspond to the name of a Shark Probe's action plugin.
watch.actions.actions[action].uid <string> Action Id
watch.actions.actions[action].parameters <array of <object>> Parameter list
watch.actions.actions[action].parameters
[parameter]
<object>
watch.actions.actions[action].parameters
[parameter].name
<string> Parameter name
watch.actions.actions[action].parameters
[parameter].value
<string> Parameter value
watch.actions.actions[action].parameters
[parameter].custom
<boolean> True if it is a custom parameter Optional
watch.actions.actions[action].side <string> Who is in charge of performing the action, either server or client Values: CLIENT, SERVER
watch.actions.fired_triggers <object> The list of events that need to be signaled AT THE SAME TIME in order for the watch actions to run
watch.actions.fired_triggers.
bool_operator
<string> The boolean operation to apply: "And" or "Or" Values: NOT_INITIALIZED, AND, OR
watch.actions.fired_triggers.
triggering_mode
<string> The condition that will cause a line to be considered true Values: ONESHOT, LEADINGEDGE, CONTINUOUS, TRAILINGEDGE, LEADING_AND_TRAILING_EDGE
watch.actions.fired_triggers.triggers <array of <string>> The List of unique ids of the events that need to be signaled
watch.actions.fired_triggers.triggers
[trigger_uid]
<string>
watch.timing <object> Information about the window that is considered by the watch during every check
watch.timing.sampling_ms <number> Optional
watch.timing.time_analysis_mode <string> Specification of the type of analysis for the data samples Optional; Values: SAMPLE_BY_SAMPLE, AGGREGATED; If SAMPLE_BY_SAMPLE, checks every sample and applies the conditions to it (stripchart style). If AGGREGATED, aggregates per interval_ms to calculate the value for the conditions (barchart style).
watch.timing.from <string> The time interval that the watch will cover Optional; Values: NOT_INITIALIZED, NOW, BEGINNING_OF_VIEW, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR; This is the time window that the watch must consider during every check.
watch.timing.interval_ms <number> The time interval that the watch will cover. This is the time window that the watch must consider during every check. Optional
watch.output_uid <string> Output Id that the watch refers to

Error Codes

In the event that an error occurs while processing a request, the server will respond with appropriate HTTP status code and additional information in the response body:

{
     "error_id":   "{error identifier}",
     "error_text": "{error description}",
     "error_info": {error specific data structure, optional}
}

The table below lists the possible errors and the associated HTTP status codes that may returned.

Error ID HTTP Status Comments
REQUEST_INVALID_INPUT 400 The request is invalid
AUTH_REQUIRED 401 Missing authentication credentials
AUTH_INVALID_CREDENTIALS 401 Invalid user name or password
AUTH_INVALID_SESSION 401 The authentication session has timed out or is invalid
AUTH_EXPIRED_PASSWORD 401 Account password has expired
AUTH_INVALID_CODE 401 The Oauth access code is invalid
AUTH_EXPIRED_TOKEN 401 The Oauth token has expired
AUTH_EXPIRED_CODE 401 The Oauth access code has expired
AUTH_DISABLED_ACCOUNT 403 Account has been disabled
AUTH_FORBIDDEN 403 Account does not have privileges for this request
AUTH_INVALID_TOKEN 403 The Oauth token is invalid
RESOURCE_NOT_FOUND 404 The requested resource was not found
HTTP_INVALID_METHOD 405 The requested method is not supported by this resouce
INTERNAL_ERROR 500 Internal error occurred