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_extensionsAuthorization
This request requires authorization.
Response BodyOn 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_typesAuthorization
This request requires authorization.
Response BodyOn 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_defaultsAuthorization
This request requires authorization.
Response BodyOn 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_vendorsAuthorization
This request requires authorization.
Response BodyOn 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/timezonesAuthorization
This request requires authorization.
Response BodyOn 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/typesAuthorization
This request requires authorization.
Response BodyOn 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/fieldsAuthorization
This request requires authorization.
Response BodyOn 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 BodyOn 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/usersAuthorization
This request requires authorization.
Response BodyOn 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}/lockedAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
user_id | <string> | User identifier |
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. |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
user_id | <string> | User identifier |
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 |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
group_id | <string> | Group identifier |
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/groupsAuthorization
This request requires authorization.
Response BodyOn 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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
group_id | <string> | Group identifier |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
user_id | <string> | User identifier |
Returns a user data object.
users / groups: Create group
Create a new local user group
POST https://{device}/api/shark/5.1/auth/groupsAuthorization
This request requires authorization.
Request BodyProvide a group data object.
Response BodyOn 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/usersAuthorization
This request requires authorization.
Request BodyProvide 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> |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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}/statusAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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 |
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}/statusAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
Returns a job_status data object.
jobs: List jobs
Get the list of configured capture jobs
GET https://{device}/api/shark/5.1/jobsAuthorization
This request requires authorization.
Response BodyOn 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}/configAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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}/indexAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
Provide a job_config data object.
Response BodyOn 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}/statsAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
job_id | <string> | Job identifier |
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/jobsAuthorization
This request requires authorization.
Request BodyProvide a job_config data object.
Response BodyOn 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}/packetsAuthorization
This request requires authorization.
ParametersProperty 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. |
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}/exportsAuthorization
This request requires authorization.
ParametersProperty 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". |
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.
ParametersProperty 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. |
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.
ParametersProperty 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. |
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.
ParametersProperty 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. |
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}/exportsAuthorization
This request requires authorization.
ParametersProperty 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". |
Provide an export_config data object.
Response BodyOn 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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
interface_id | <string> | Interface identifier |
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 |
On success, the server does not provide any body in the responses.
interfaces: Update interface blink status
Request update of interface blink status.
PUT https://{device}/api/shark/5.1/interfaces/{interface_id}/blink_statusAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
interface_id | <string> | Interface identifier |
Provide a request body with the following structure:
- JSON
{ "blink_status": string } Example: { "blink_status": "ON" }
Property Name | Type | Description | Notes |
---|---|---|---|
blink_settings | <object> | Update interface 'blink' status | |
blink_settings.blink_status | <string> | New 'blink' status for this interface | Values: ON, OFF, UNKNOWN |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
interface_id | <string> | Interface identifier |
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.
ParametersProperty 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 |
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}/aclAuthorization
This request requires authorization.
Response BodyOn 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}/unlockAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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}/statsAuthorization
This request requires authorization.
Response BodyOn 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}/legendAuthorization
This request requires authorization.
Response BodyOn 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/viewsAuthorization
This request requires authorization.
Request BodyProvide a view data object.
Response BodyOn 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}/aclAuthorization
This request requires authorization.
Request BodyProvide 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 |
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/viewsAuthorization
This request requires authorization.
Response BodyOn 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}/lockAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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 BodyReturns 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.
ParametersProperty 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 |
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 BodyOn 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/pingAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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/pingAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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/pingAuthorization
This request requires authorization.
Response BodyOn success, the server does not provide any body in the responses.
ping: Ping (GET)
Generic ping response.
GET https://{device}/api/shark/5.1/pingAuthorization
This request requires authorization.
Response BodyOn 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/isoAuthorization
This request requires authorization.
HTTP HeadersProperty 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]" |
Provide a request body containing the update ISO file with content type multipart/form-data.
Response BodyOn 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/reinitializeAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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_infoAuthorization
This request requires authorization.
Response BodyOn 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/infoAuthorization
This request requires authorization.
Response BodyOn 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/urlAuthorization
This request requires authorization.
Request BodyProvide 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 |
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/stateAuthorization
This request requires authorization.
Request BodyProvide 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 |
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/restartAuthorization
This request requires authorization.
Request BodyProvide 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 |
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_storageAuthorization
This request requires authorization.
Request BodyProvide 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 |
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_logAuthorization
This request requires authorization.
Response BodyOn 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.
ParametersProperty 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 |
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/updateAuthorization
This request requires authorization.
Response BodyOn 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/shutdownAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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/storageAuthorization
This request requires authorization.
Response BodyOn 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}/enableAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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}/watchesAuthorization
This request requires authorization.
Request BodyProvide a watch data object.
Response BodyOn 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}/watchesAuthorization
This request requires authorization.
Response BodyOn 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}/disableAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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 BodyOn 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 BodyProvide a watch data object.
Response BodyOn 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 BodyReturns 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}/indexAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
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/clipsAuthorization
This request requires authorization.
Request BodyProvide a clip_config data object.
Response BodyOn 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}/statusAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
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}/configAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
Returns a clip_config data object.
clips: List clips
Get the list of trace clips
GET https://{device}/api/shark/5.1/clipsAuthorization
This request requires authorization.
Response BodyOn 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}/statusAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
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 |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
Provide a clip_config data object.
Response BodyOn 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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
clip_id | <string> | Clip identifier |
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/webAuthorization
This request requires authorization.
Request BodyProvide 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. |
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_exportAuthorization
This request requires authorization.
Request BodyProvide 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. |
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/generateAuthorization
This request requires authorization.
Request BodyProvide 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 |
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_exportAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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 BodyOn 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_profilersAuthorization
This request requires authorization.
Request BodyProvide 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 |
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_webAuthorization
This request requires authorization.
Request BodyDo not provide a request body.
Response BodyOn 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/certificatesAuthorization
This request requires authorization.
Response BodyOn 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. |
<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. |
<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/generateAuthorization
This request requires authorization.
Request BodyProvide 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 |
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_portsAuthorization
This request requires authorization.
Request BodyProvide 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> |
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_portsAuthorization
This request requires authorization.
Response BodyOn 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_mappingsAuthorization
This request requires authorization.
Response BodyOn 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_groupsAuthorization
This request requires authorization.
Request BodyProvide 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> |
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_applicationsAuthorization
This request requires authorization.
Request BodyProvide 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> |
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_namesAuthorization
This request requires authorization.
Request BodyProvide 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> |
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_groupsAuthorization
This request requires authorization.
Response BodyOn 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/applicationsAuthorization
This request requires authorization.
Response BodyOn 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_mappingsAuthorization
This request requires authorization.
Request BodyProvide 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> |
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_applicationsAuthorization
This request requires authorization.
Response BodyOn 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_namesAuthorization
This request requires authorization.
Response BodyOn 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_estimateAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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}/moveAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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 |
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}/checksumAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
directory_id | <string> | The directory in which the file or directory is to be created |
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 |
Content-Type: application/x-vnd.tcpdump
Provide a request body containing the file contents with content type application/x-vnd.tcpdump.
Create directoryContent-Type: x-shark-directory
Do not provide a request body.
Create merged or multisegment fileContent-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 |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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.
ParametersProperty 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 |
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}/indexAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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 |
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}/downloadAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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/fsAuthorization
This request requires authorization.
Response BodyOn 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}/indexAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
Do not provide a request body.
Response BodyOn 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}/indexAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
directory_id | <string> | Directory path |
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_estimateAuthorization
This request requires authorization.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File path |
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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
packet_count | <number> | Maximum number of packets to process | Optional |
file_id | <string> | File path |
Do not provide a request body.
Response BodyOn 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.
ParametersProperty Name | Type | Description | Notes |
---|---|---|---|
file_id | <string> | File or directory path |
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 BodyOn 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 BodyOn 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/licensesAuthorization
This request requires authorization.
Request BodyProvide 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> |
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/licensesAuthorization
This request requires authorization.
Response BodyOn 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/requestAuthorization
This request requires authorization.
Request BodyProvide 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) |
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/statusAuthorization
This request requires authorization.
Response BodyOn 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_exportAuthorization
This request requires authorization.
Response BodyOn 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/memoryAuthorization
This request requires authorization.
Response BodyOn 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/storageAuthorization
This request requires authorization.
Response BodyOn 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/firewallAuthorization
This request requires authorization.
Request BodyProvide 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 |
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/snmpAuthorization
This request requires authorization.
Response BodyReturns a snmp_settings data object.
settings: Update profiler export settings
Update profiler export settings.
PUT https://{device}/api/shark/5.1/settings/profiler_exportAuthorization
This request requires authorization.
Request BodyProvide a profilerexport_settings data object.
Response BodyOn 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_exportAuthorization
This request requires authorization.
Response BodyReturns a profilerexport_settings data object.
settings: Update authentication settings
Update authentication settings.
PUT https://{device}/api/shark/5.1/settings/authAuthorization
This request requires authorization.
Request BodyProvide an auth_settings data object.
Response BodyOn 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/basicAuthorization
This request requires authorization.
Request BodyProvide a basic_settings data object.
Response BodyOn 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/authAuthorization
This request requires authorization.
Response BodyReturns 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_domainsAuthorization
This request requires authorization.
Request BodyProvide 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> |
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/basicAuthorization
This request requires authorization.
Response BodyReturns a basic_settings data object.
settings: Update snmp settings
Update SNMP settings.
PUT https://{device}/api/shark/5.1/settings/snmpAuthorization
This request requires authorization.
Request BodyProvide a snmp_settings data object.
Response BodyOn 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/firewallAuthorization
This request requires authorization.
Response BodyOn 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_domainsAuthorization
This request requires authorization.
Response BodyOn 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/auditAuthorization
This request requires authorization.
Request BodyProvide an audit_settings data object.
Response BodyOn 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/notificationAuthorization
This request requires authorization.
Response BodyReturns a notification_settings data object.
settings: Get audit settings
Get audit settings.
GET https://{device}/api/shark/5.1/settings/auditAuthorization
This request requires authorization.
Response BodyReturns an audit_settings data object.
settings: Update notification settings
Update management daemon configuration parameters.
PUT https://{device}/api/shark/5.1/settings/notificationAuthorization
This request requires authorization.
Request BodyProvide a notification_settings data object.
Response BodyOn success, the server does not provide any body in the responses.
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 |