{"restSchemaVersion":"1.0","name":"profiler","title":"Riverbed Cascade Profiler REST API.","version":"1.0","defaultAuthorization":"required","servicePath":"\/api\/profiler\/1.0","errors":[{"error_id":"INTERNAL_ERROR","description":"Internal server error.","http_status":"500"},{"error_id":"AUTH_REQUIRED","description":"The requested resource requires authentication.","http_status":"401"},{"error_id":"AUTH_INVALID_CREDENTIALS","description":"Invalid username and\/or password.","http_status":"401"},{"error_id":"AUTH_INVALID_SESSION","description":"Session ID is invalid.","http_status":"401"},{"error_id":"AUTH_EXPIRED_PASSWORD","description":"The password must be changed. Access only to password change resources.","http_status":"403"},{"error_id":"AUTH_DISABLED_ACCOUNT","description":"Account is either temporarily or permanently disabled.","http_status":"403"},{"error_id":"AUTH_FORBIDDEN","description":"User is not authorized to access the requested resource.","http_status":"403"},{"error_id":"AUTH_INVALID_TOKEN","description":"OAuth access token is invalid.","http_status":"401"},{"error_id":"AUTH_EXPIRED_TOKEN","description":"OAuth access token is expired.","http_status":"401"},{"error_id":"AUTH_INVALID_CODE","description":"OAuth access code is invalid.","http_status":"401"},{"error_id":"AUTH_EXPIRED_CODE","description":"OAuth access code is expired.","http_status":"401"},{"error_id":"RESOURCE_NOT_FOUND","description":"Requested resource was not found.","http_status":"404"},{"error_id":"HTTP_INVALID_METHOD","description":"Requested method is not available for this resource.","http_status":"405"},{"error_id":"HTTP_INVALID_HEADER","description":"An HTTP header was malformed.","http_status":"400"},{"error_id":"REQUEST_INVALID_INPUT","description":"Malformed input structure.","http_status":"400"},{"error_id":"URI_INVALID_PARAMETER","description":"URI parameter is not supported or malformed.","http_status":"400"},{"error_id":"URI_MISSING_PARAMETER","description":"Missing required parameter.","http_status":"400"}],"schemas":[],"resources":{"Vnis":{"methods":{"List VNIs":{"description":"Get a list of Virtual Network Identifiers.","formats":["xml","json"],"httpmethod":"GET","path":"vnis","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of VNIs (Virtual Network Identifiers of SDN setup).","items":{"description":"Object representing a VNI.","required":false,"properties":{"id":{"description":"ID of the VNI.","required":true,"type":"number"},"description":{"description":"Description of the VNI.","required":false,"type":"string"},"name":{"description":"Name of the VNI.","required":false,"type":"string"}},"id":"VNI","type":"object"},"id":"VNIs","type":"array","example":[{"description":"Customer A. Blue Network.","name":"Blue_Network","id":100},{"description":"Customer B. Blue Network.","name":"Red_Network","id":200}]},"authorization":"required"},"Delete VNI":{"description":"Delete a Virtual Network Identifier.","httpmethod":"DELETE","path":"vnis\/{vni_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"},"Update VNIs":{"description":"Update one or many Virtual Network Identifiers.","request":{"description":"List of VNIs (Virtual Network Identifiers of SDN setup).","items":{"description":"Object representing a VNI.","required":false,"properties":{"id":{"description":"ID of the VNI.","required":true,"type":"number"},"description":{"description":"Description of the VNI.","required":false,"type":"string"},"name":{"description":"Name of the VNI.","required":false,"type":"string"}},"id":"VNI","type":"object"},"id":"VNIs","type":"array","example":[{"description":"Customer A. Blue Network.","name":"Blue_Network","id":100},{"description":"Customer B. Blue Network.","name":"Red_Network","id":200}]},"httpmethod":"PUT","path":"vnis","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"},"Get VNI":{"description":"Get a Virtual Network Identifier.","formats":["xml","json"],"httpmethod":"GET","path":"vnis\/{vni_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing a VNI.","properties":{"id":{"description":"ID of the VNI.","required":true,"type":"number"},"description":{"description":"Description of the VNI.","required":false,"type":"string"},"name":{"description":"Name of the VNI.","required":false,"type":"string"}},"id":"VNI","type":"object","example":{"description":"Customer A. Blue Network.","name":"Blue_Network","id":100}},"authorization":"required"},"Update VNI":{"description":"Update one Virtual Network Identifier.","request":{"description":"Object representing a VNI.","properties":{"id":{"description":"ID of the VNI.","required":true,"type":"number"},"description":{"description":"Description of the VNI.","required":false,"type":"string"},"name":{"description":"Name of the VNI.","required":false,"type":"string"}},"id":"VNI","type":"object","example":{"description":"Customer A. Blue Network.","name":"Blue_Network","id":100}},"httpmethod":"PUT","path":"vnis\/{vni_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"}}},"Devices":{"methods":{"Get device":{"description":"Get a device by IP Address.","formats":["xml","json"],"httpmethod":"GET","path":"devices\/{device_ip}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing a device.","properties":{"id":{"description":"Device identifier (ID). Used internally in the product and in the API.","required":true,"type":"number"},"type_id":{"description":"Device type ID; a way to represent device type that is more friendly to programs.","required":true,"type":"number"},"ipaddr":{"description":"Device IP address.","required":true,"type":"string"},"name":{"description":"Device name, which usually comes from SNMP or DNS.","required":true,"type":"string"},"type":{"description":"Device type, e.g. Cascade Gateway, Cascade Shark or Netflow device.","required":true,"type":"string"},"version":{"description":"Version of the protocol used to communicate with the device.","required":true,"type":"string"}},"id":"Device","type":"object","example":{"name":"MyNetflowDevice","type_id":2,"ipaddr":"10.0.0.1","version":"N\/A","type":"Netflow","id":123}},"authorization":"required"},"List devices":{"description":"Get a list of devices.","parameters":{"type_id":{"required":false,"type":"number","description":"Filter devices by device type."},"cidr":{"required":false,"type":"string","description":"Filter devices by IP or Subnet (e.g. 10.0.0.0\/8)."}},"formats":["xml","json"],"httpmethod":"GET","path":"devices","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of network devices that report data to Profiler.","items":{"description":"One device from the list of devices that report data.","required":false,"properties":{"id":{"description":"Device identifier (ID). Used internally in the product and in the API.","required":true,"type":"number"},"type_id":{"description":"Device type ID; a way to represent device type that is more friendly to programs.","required":true,"type":"number"},"ipaddr":{"description":"Device IP address.","required":true,"type":"string"},"name":{"description":"Device name, which usually comes from SNMP or DNS.","required":true,"type":"string"},"type":{"description":"Device type, e.g. Cascade Gateway, Cascade Shark or Netflow device.","required":true,"type":"string"},"version":{"description":"Version of the protocol used to communicate with the device.","required":true,"type":"string"}},"id":"Device","type":"object"},"id":"Devices","type":"array","example":[{"name":"MyNetflowDevice","type_id":2,"ipaddr":"10.0.0.1","version":"N\/A","type":"Netflow","id":123},{"name":"MySensorDevice","type_id":1,"ipaddr":"10.0.0.2","version":"M8.4","type":"Sensor","id":124}]},"authorization":"required"},"Delete device":{"description":"Delete a device by IP Address. Warning: the device will be deleted in a few minutes after this call.","httpmethod":"DELETE","path":"devices\/{device_ip}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"}}},"Ping":{"methods":{"Ping":{"description":"Simple test of service availability.","httpmethod":"GET","path":"ping","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"}}},"Reporting":{"methods":{"List reports":{"description":"Get a list of reports with their respective status.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/reports","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of report objects.","items":{"description":"Object representing report information.","required":false,"properties":{"run_time":{"description":"Time when the report was run (Unix time).","required":true,"type":"number"},"error_text":{"description":"A report can be completed with an error. Error message may provide more detailed info.","required":false,"type":"string"},"remaining_seconds":{"description":"Number of seconds remaining to run the report. Even if this number is 0, the report may not yet be completed, so check 'status' to make sure what the status is.","required":true,"type":"number"},"saved":{"description":"Boolean flag indicating if the report was saved.","required":true,"type":"string"},"id":{"description":"ID of the report. To be used in the API.","required":true,"type":"number"},"status":{"description":"Status of the report.","required":true,"type":"string","enum":["completed","running","waiting"]},"percent":{"description":"Progress of the report represented by percentage of report completion.","required":true,"type":"number"},"user_id":{"description":"ID of the user who owns the report.","required":true,"type":"number"},"size":{"description":"Size of the report in kilobytes.","required":true,"type":"number"},"name":{"description":"Name of the report. Could be given by a user or automatically generated by the system.","required":false,"type":"string"},"template_id":{"description":"ID of the template that the report is based on.","required":true,"type":"number"}},"id":"ReportInfo","type":"object"},"id":"ReportInfoList","type":"array","example":[{"status":"completed","user_id":1,"name":"","percent":100,"id":1000,"remaining_seconds":0,"run_time":1352494550,"saved":false,"template_id":952,"error_text":"","size":140},{"status":"completed","user_id":1,"name":"Host Information Report","percent":100,"id":1001,"remaining_seconds":0,"run_time":1352494550,"saved":true,"template_id":952,"error_text":"","size":140}]},"authorization":"required"},"List directions":{"description":"Get a list of directions that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/directions","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of directions.","items":{"description":"Object representing a direction.","required":false,"properties":{"id":{"description":"ID of a direction. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a direction.","required":true,"type":"string"}},"id":"Direction","type":"object"},"id":"Directions","type":"array","example":[{"id":"inn","name":"in"},{"id":"out","name":"out"},{"id":"c2s","name":"client to server"},{"id":"s2c","name":"server to client"}]},"authorization":"required"},"List categories":{"description":"Get a list of categories that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/categories","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of categories.","items":{"description":"Object representing a category.","required":false,"properties":{"id":{"description":"ID of a category. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a category.","required":true,"type":"string"}},"id":"Category","type":"object"},"id":"Categories","type":"array","example":[{"id":"idx","name":"index"},{"id":"key","name":"key"}]},"authorization":"required"},"List statictics":{"description":"Get a list of statistics that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/statistics","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of statistics.","items":{"description":"Object representing a statistic.","required":false,"properties":{"id":{"description":"ID of a statistic. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a statistic.","required":true,"type":"string"}},"id":"Statistic","type":"object"},"id":"Statistics","type":"array","example":[{"id":"tot","name":"total"},{"id":"avg","name":"average"},{"id":"pek","name":"peak"},{"id":"min","name":"min"}]},"authorization":"required"},"Delete report":{"description":"Delete a report.","httpmethod":"DELETE","path":"reporting\/reports\/{report_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"},"List realms":{"description":"Get a list of realms.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/realms","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of type of report queries (realms) that could be requested and run.","items":{"description":"Object representing a realm.","required":false,"properties":{"id":{"description":"ID of a realm. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a realm.","required":true,"type":"string"}},"id":"Realm","type":"object"},"id":"Realms","type":"array","example":[{"id":"traffic_summary","name":"traffic summary"},{"id":"traffic_flow_list","name":"traffic flow list"},{"id":"traffic_overall_time_series","name":"traffic overall time series"}]},"authorization":"required"},"List centricities":{"description":"Get a list of centricities that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/centricities","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of centricities.","items":{"description":"Object representing a centricity.","required":false,"properties":{"id":{"description":"ID of a centricity. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a centricity.","required":true,"type":"string"}},"id":"Centricity","type":"object"},"id":"Centricities","type":"array","example":[{"id":"hos","name":"host"},{"id":"int","name":"interface"}]},"authorization":"required"},"List units":{"description":"Get a list of units that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/units","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of units.","items":{"description":"Object representing a unit.","required":false,"properties":{"id":{"description":"ID of a unit. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a unit.","required":true,"type":"string"}},"id":"Unit","type":"object"},"id":"Units","type":"array","example":[{"id":"byt","name":"bytes"},{"id":"pkt","name":"packet"},{"id":"con","name":"conntions"}]},"authorization":"required"},"List severities":{"description":"Get a list of severities that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/severities","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of severities.","items":{"description":"Object representing a severity.","required":false,"properties":{"id":{"description":"ID of a severity. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a severity.","required":true,"type":"string"}},"id":"Severity","type":"object"},"id":"Severities","type":"array","example":[{"id":"nav","name":"not available"},{"id":"nml","name":"normal"},{"id":"low","name":"low"},{"id":"med","name":"medium"},{"id":"hgh","name":"high"},{"id":"all","name":"all"}]},"authorization":"required"},"Get query data":{"description":"Get data for one or many columns from this query.","parameters":{"columns":{"required":false,"type":"string","description":"Comma-separated list of column ids."},"offset":{"required":false,"type":"number","description":"Start row."},"limit":{"required":false,"type":"number","description":"Number of rows to be returned."}},"formats":["xml","json"],"httpmethod":"GET","path":"reporting\/reports\/{report_id}\/queries\/{query_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing a 2-dimensional array of query data and totals.","properties":{"data":{"description":"Two-dimensional data array.","items":{"description":"One row in the list of rows.","items":{"description":"One value datum.","required":false,"type":"string"},"required":false,"id":"Row","type":"array"},"required":true,"id":"Rows","type":"array"},"data_size":{"description":"Number of rows in the data array.","required":false,"type":"number"},"totals":{"description":"Object representing a row of total values (totals).","items":{"description":"One total datum.","required":false,"type":"string"},"required":false,"id":"Totals","type":"array"}},"id":"DataResults","type":"object","example":{"data":[["10.38.8.202|","6878717.15556","7041.06111111"],["10.38.9.152|","1996165.24167","2049.01388889"]],"data_size":3744,"totals":["","20293913.8417","23577.3055556"]}},"authorization":"required"},"List group bys":{"description":"Get a list of reporting summarizations (group bys).","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/group_bys","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of reporting summarizations (group-bys).","items":{"description":"Object representing a group by.","required":false,"properties":{"id":{"description":"ID of a group by. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a group by.","required":true,"type":"string"}},"id":"GroupBy","type":"object"},"id":"GroupBys","type":"array","example":[{"id":"hos","name":"host"},{"id":"hop","name":"host pair"},{"id":"gro","name":"host group"},{"id":"gpp","name":"host group pair"}]},"authorization":"required"},"List columns":{"description":"Get a list of columns.","parameters":{"metric":{"required":false,"type":"string","description":"Filter the list of columns by metric."},"statistic":{"required":false,"type":"string","description":"Filter the list of columns by statistic."},"severity":{"required":false,"type":"string","description":"Filter the list of columns by severity."},"role":{"required":false,"type":"string","description":"Filter the list of columns by role."},"category":{"required":false,"type":"string","description":"Filter the list of columns by category."},"group_by":{"required":false,"type":"string","description":"Filter the list of columns by group by."},"direction":{"required":false,"type":"string","description":"Filter the list of columns by direction."},"area":{"required":false,"type":"string","description":"Filter the list of columns by area."},"centricity":{"required":false,"type":"string","description":"Filter the list of columns by centricity."},"unit":{"required":false,"type":"string","description":"Filter the list of columns by unit."},"rate":{"required":false,"type":"string","description":"Filter the list of columns by rate."},"realm":{"required":false,"type":"string","description":"Filter the list of columns by realm."}},"formats":["xml","json"],"httpmethod":"GET","path":"reporting\/columns","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of reporting query columns.","items":{"description":"A column for reporting query.","required":false,"properties":{"metric":{"description":"Column 'metric'. See 'reporting\/metrics'.","required":true,"type":"string"},"cli_srv":{"description":"Text flag indicating if the column is for the clients or servers.","required":true,"type":"string"},"comparison_parameter":{"description":"Parameter for column comparison.","required":true,"type":"string"},"internal":{"description":"Boolean flag indicating if the column is internal to the system.","required":true,"type":"string"},"id":{"description":"System ID for the column. Used in the API.","required":true,"type":"number"},"strid":{"description":"String ID for the column. Not used by the API, but easier for the human user to see.","required":true,"type":"string"},"statistic":{"description":"Column 'statistic'. See 'reporting\/statistics'.","required":true,"type":"string"},"severity":{"description":"Column 'severity'. See 'reporting\/severities.","required":true,"type":"string"},"role":{"description":"Column 'role'. See 'reporting\/roles'.","required":true,"type":"string"},"category":{"description":"Column 'category'. See 'reporting\/categories'.","required":true,"type":"string"},"name":{"description":"Column name. Format used for column names is similar to the format used for column data.","required":true,"type":"string"},"comparison":{"description":"Column 'comparison'. See 'reporting\/comparisons'.","required":true,"type":"string"},"sortable":{"description":"Boolean flag indicating if this data can be sorted on this column when running the template.","required":true,"type":"string"},"type":{"description":"Type of the column data. See 'reporting\/types'.","required":true,"type":"string"},"direction":{"description":"Column 'direction'. See 'reporting\/directions'.","required":true,"type":"string"},"available":{"description":"Boolean flag indicating that the data for the column is available without the need to re-run the template.","required":true,"type":"string"},"context":{"description":"Internal flag used for formatting certain kinds of data.","required":true,"type":"string"},"area":{"description":"Column 'area'. See 'reporting\/area'.","required":true,"type":"string"},"has_others":{"description":"Boolean flag indicating if the column's 'other' row can be computed.","required":true,"type":"string"},"unit":{"description":"Column 'unit'. See 'reporting\/units'.","required":true,"type":"string"},"name_type":{"description":"Type of the column name. See 'reporting\/types'.","required":true,"type":"string"},"rate":{"description":"Column 'rate'. See 'reporting\/rates'.","required":true,"type":"string"}},"id":"Column","type":"object"},"id":"Columns","type":"array","example":[{"strid":"ID_TOTAL_BYTES","metric":"net_bw","rate":"count","statistic":"total","id":30,"unit":"bytes","category":"data","severity":"none","area":"none","internal":false,"role":"none","cli_srv":"none","type":"int","available":false,"direction":"none","comparison":"none","sortable":true,"name":"Total Bytes","comparison_parameter":"","has_others":false,"context":false,"name_type":"colname_parts"},{"strid":"ID_TOTAL_PKTS","metric":"net_bw","rate":"count","statistic":"total","id":31,"unit":"pkts","category":"data","severity":"none","area":"none","internal":false,"role":"none","cli_srv":"none","type":"int","available":false,"direction":"none","comparison":"none","sortable":true,"name":"Total Packets","comparison_parameter":"","has_others":false,"context":false,"name_type":"colname_parts"}]},"authorization":"required"},"Get report":{"description":"Get information for report. Includes progress information for running reports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/reports\/{report_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing report information.","properties":{"run_time":{"description":"Time when the report was run (Unix time).","required":true,"type":"number"},"error_text":{"description":"A report can be completed with an error. Error message may provide more detailed info.","required":false,"type":"string"},"remaining_seconds":{"description":"Number of seconds remaining to run the report. Even if this number is 0, the report may not yet be completed, so check 'status' to make sure what the status is.","required":true,"type":"number"},"saved":{"description":"Boolean flag indicating if the report was saved.","required":true,"type":"string"},"id":{"description":"ID of the report. To be used in the API.","required":true,"type":"number"},"status":{"description":"Status of the report.","required":true,"type":"string","enum":["completed","running","waiting"]},"percent":{"description":"Progress of the report represented by percentage of report completion.","required":true,"type":"number"},"user_id":{"description":"ID of the user who owns the report.","required":true,"type":"number"},"size":{"description":"Size of the report in kilobytes.","required":true,"type":"number"},"name":{"description":"Name of the report. Could be given by a user or automatically generated by the system.","required":false,"type":"string"},"template_id":{"description":"ID of the template that the report is based on.","required":true,"type":"number"}},"id":"ReportInfo","type":"object","example":{"status":"completed","user_id":1,"name":"Host Information Report","percent":100,"id":1001,"remaining_seconds":0,"run_time":1352494550,"saved":true,"template_id":952,"error_text":"","size":140}},"authorization":"required"},"List templates":{"description":"Get a list of templates.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/templates","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of templates available on the system.","items":{"description":"One template in the list of templates.","required":false,"properties":{"schedule_type":{"description":"Type of template scheduling.","required":false,"type":"string","enum":["Once","Hourly","Daily","Weekly","Monthly","Quarterly"]},"id":{"description":"ID of the template.","required":true,"type":"number"},"scheduled":{"description":"Flag indicating that the template is scheduled.","required":true,"type":"string"},"user_id":{"description":"ID of the user who owns the template.","required":false,"type":"number"},"name":{"description":"Human-readable name of the template.","required":true,"type":"string"},"next_run":{"description":"Next run time for the template if the template is scheduled to run.","required":false,"type":"number"}},"id":"ReportTemplate_1_1","type":"object"},"id":"ReportTemplates_1_1","type":"array","example":[]},"authorization":"required"},"Get report config":{"description":"Get configuration information for one report. Includes criteria, layout and GUI attributes.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/reports\/{report_id}\/config","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing report configuration.","properties":{"criteria":{"description":"Report criteria.","required":true,"properties":{"traffic_expression":{"description":"Traffic expression.","required":false,"type":"string"},"time_frame":{"description":"Time frame object.","required":false,"properties":{"resolution":{"description":"Report data resolution. It can be one of: 1min, 15min, hour, 6hour, day, week, month. If not specified a resolution will automatically be selected based on time frame of the report.","required":false,"type":"string"},"end":{"description":"Report end time (unix time).","required":false,"type":"number"},"expression":{"description":"Traffic expression.","required":false,"type":"string"},"start":{"description":"Report start time (unix time).","required":false,"type":"number"}},"id":"ReportTimeFrame","type":"object"},"query":{"description":"Query object.","required":false,"properties":{"columns":{"description":"Query columns. Can be many of GET \/reporting\/columns.","items":{"description":"Query column.","required":false,"type":"number"},"required":false,"id":"ReportQueryFilterColumns","type":"array"},"role":{"description":"Query role. Can be one of \/reporting\/roles.","required":false,"type":"string"},"group_by":{"description":"Query group_by. Can be one of GET \/reporting\/group_bys.","required":false,"type":"string"},"host_group_type":{"description":"Query host group type. Required for \"host group (gro)\" \"host group pairs (gpp)\" and \"host group pairs with ports (gpr)\" queries.","required":false,"type":"string"},"direction":{"description":"Query direction. Can be one of GET \/reporting\/directions.","required":false,"type":"string"},"sort_column":{"description":"Query sort column. Can be one of GET \/reporting\/columns.","required":false,"type":"number"},"area":{"description":"Query area. Can be one of GET \/reporting\/areas.","required":false,"type":"string"},"centricity":{"description":"Query centricity. Can be one of GET \/reporting\/centricities.","required":false,"type":"string"},"realm":{"description":"Query realm. Can be one of GET \/reporting\/realms.","required":true,"type":"string"}},"id":"ReportQueryFilter","type":"object"},"deprecated":{"description":"Map with legacy criteria attributes that will not be supported soon.","required":false,"additionalProperties":{"description":"ReportDeprecatedFilters map value.","required":false,"xmlKeyName":"key","type":"string"},"id":"ReportDeprecatedFilters","type":"object"}},"id":"ReportCriteria","type":"object"},"attributes":{"description":"Report attributes.","required":true,"additionalProperties":{"description":"Report attributes value.","required":false,"xmlKeyName":"key","type":"string"},"id":"ReportConfigAttrs","type":"object"},"sections":{"description":"Report sections.","items":{"description":"One section of a report.","required":false,"properties":{"widgets":{"description":"List of section widgets.","items":{"description":"One widget from a list of widgets.","required":false,"properties":{"query_id":{"description":"Query ID for the query that the widget is based on.","required":true,"type":"string"},"id":{"description":"Widget ID used to reference a widget from the API.","required":true,"type":"string"},"type":{"description":"Visual type of the widget.","required":true,"type":"string"},"attributes":{"description":"Widget attributes.","required":true,"additionalProperties":{"description":"Attribute value in the map.","required":false,"xmlKeyName":"key","type":"string"},"id":"ReportWidgetAttrs","type":"object"}},"id":"ReportWidget","type":"object"},"required":true,"id":"ReportWidgets","type":"array"},"layout":{"description":"Section widget layout.","items":{"description":"One horizontal line of widgets.","required":false,"properties":{"items":{"description":"List of items (widgets) on the line.","items":{"description":"One item in the list of layout items.","required":false,"properties":{"id":{"description":"ID of the layout item.","required":false,"type":"string"}},"id":"ReportLayoutItem","type":"object"},"required":true,"id":"ReportLayoutItems","type":"array"},"wrappable":{"description":"Flag allowing wrapping.","required":false,"type":"string"},"full_width":{"description":"Flag representing width of the layout line.","required":false,"type":"string"},"item_spacing":{"description":"Item spacing between widgets.","required":false,"type":"string"},"line_spacing":{"description":"Line spacing.","required":false,"type":"string"}},"id":"ReportLayoutLine","type":"object"},"required":false,"id":"ReportSectionLayout","type":"array"},"attributes":{"description":"Section attributes.","required":true,"additionalProperties":{"description":"Attribute value in the map.","required":false,"xmlKeyName":"key","type":"string"},"id":"ReportSectionAttrs","type":"object"}},"id":"ReportSection","type":"object"},"required":true,"id":"ReportSections","type":"array"}},"id":"ReportConfig","type":"object","example":{"attributes":{"title":"Report name"},"sections":[{"widgets":[{"type":"table","query_id":"0:sum_hos_non_non_non_non_non_non_non_33_d_0","id":"sum_hos_non_non_non_non_non_non_non_tbl_0_0","attributes":{"page_size":"20","sort_col":"33","col_order":"6,33,34"}}],"attributes":{"sort_desc":"1"},"layout":[{"items":[{"id":"sum_hos_non_non_non_non_non_non_non_tbl_0_0"}]}]}],"criteria":{"time_frame":{"start":1352319891,"end":1352320191},"query":{"realm":"traffic_summary","sort_column":33,"centricity":"hos","group_by":"hos","columns":[6,33,34]}}}},"authorization":"required"},"List areas":{"description":"Get a list of areas that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/areas","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of areas.","items":{"description":"Object representing an area.","required":false,"properties":{"id":{"description":"ID of an area. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a area.","required":true,"type":"string"}},"id":"Area","type":"object"},"id":"Areas","type":"array","example":[{"id":"wan","name":"wan"},{"id":"lan","name":"lan"}]},"authorization":"required"},"List metrics":{"description":"Get a list of metrics that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/metrics","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of metrics.","items":{"description":"Object representing a metric.","required":false,"properties":{"id":{"description":"ID of a metric. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a metric.","required":true,"type":"string"}},"id":"Metric","type":"object"},"id":"Metrics","type":"array","example":[{"id":"nbw","name":"net bandwidth"},{"id":"nrt","name":"net rtt"},{"id":"rtm","name":"response time"}]},"authorization":"required"},"List rates":{"description":"Get a list of rates that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/rates","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of rates.","items":{"description":"Object representing a rate.","required":false,"properties":{"id":{"description":"ID of a rate. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a rate.","required":true,"type":"string"}},"id":"Rate","type":"object"},"id":"Rates","type":"array","example":[{"id":"cnt","name":"count"},{"id":"psc","name":"per second"}]},"authorization":"required"},"Get template":{"description":"Get a template.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/templates\/{template_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"A template for running reports.","properties":{"schedule_type":{"description":"Type of template scheduling.","required":false,"type":"string","enum":["Once","Hourly","Daily","Weekly","Monthly","Quarterly"]},"id":{"description":"ID of the template.","required":true,"type":"number"},"scheduled":{"description":"Flag indicating that the template is scheduled.","required":true,"type":"string"},"user_id":{"description":"ID of the user who owns the template.","required":false,"type":"number"},"name":{"description":"Human-readable name of the template.","required":true,"type":"string"},"next_run":{"description":"Next run time for the template if the template is scheduled to run.","required":false,"type":"number"}},"id":"ReportTemplate_1_1","type":"object"},"authorization":"required"},"Get report view (PDF, CSV)":{"description":"Get GUI view of a report (PDF, CSV).","formats":["pdf","csv"],"httpmethod":"GET","path":"reporting\/reports\/{report_id}\/view","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"},"List roles":{"description":"Get a list of roles that this version of the API supports.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/roles","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of roles.","items":{"description":"Object representing a roles.","required":false,"properties":{"id":{"description":"ID of a role. To be used in the API.","required":true,"type":"string"},"name":{"description":"Human-readable name of a role.","required":true,"type":"string"}},"id":"Role","type":"object"},"id":"Roles","type":"array","example":[{"id":"cli","name":"client"},{"id":"srv","name":"server"}]},"authorization":"required"},"Get report queries":{"description":"Get information for all queries run as part of this report. Each query has a list of columns.","formats":["xml","json"],"httpmethod":"GET","path":"reporting\/reports\/{report_id}\/queries","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of queries. Query is one tabular unit of report data.","items":{"description":"A query.","required":false,"properties":{"metric":{"description":"Query 'metric'. See 'reporting\/metrics'.","required":true,"type":"string"},"actual_log":{"description":"Type of data log file that was used to get data for the query.","required":true,"type":"string"},"columns":{"description":"List of columns that consitute the query. See 'reporting\/columns'.","items":{"description":"A column for reporting query.","required":false,"properties":{"metric":{"description":"Column 'metric'. See 'reporting\/metrics'.","required":true,"type":"string"},"cli_srv":{"description":"Text flag indicating if the column is for the clients or servers.","required":true,"type":"string"},"comparison_parameter":{"description":"Parameter for column comparison.","required":true,"type":"string"},"internal":{"description":"Boolean flag indicating if the column is internal to the system.","required":true,"type":"string"},"id":{"description":"System ID for the column. Used in the API.","required":true,"type":"number"},"strid":{"description":"String ID for the column. Not used by the API, but easier for the human user to see.","required":true,"type":"string"},"statistic":{"description":"Column 'statistic'. See 'reporting\/statistics'.","required":true,"type":"string"},"severity":{"description":"Column 'severity'. See 'reporting\/severities.","required":true,"type":"string"},"role":{"description":"Column 'role'. See 'reporting\/roles'.","required":true,"type":"string"},"category":{"description":"Column 'category'. See 'reporting\/categories'.","required":true,"type":"string"},"name":{"description":"Column name. Format used for column names is similar to the format used for column data.","required":true,"type":"string"},"comparison":{"description":"Column 'comparison'. See 'reporting\/comparisons'.","required":true,"type":"string"},"sortable":{"description":"Boolean flag indicating if this data can be sorted on this column when running the template.","required":true,"type":"string"},"type":{"description":"Type of the column data. See 'reporting\/types'.","required":true,"type":"string"},"direction":{"description":"Column 'direction'. See 'reporting\/directions'.","required":true,"type":"string"},"available":{"description":"Boolean flag indicating that the data for the column is available without the need to re-run the template.","required":true,"type":"string"},"context":{"description":"Internal flag used for formatting certain kinds of data.","required":true,"type":"string"},"area":{"description":"Column 'area'. See 'reporting\/area'.","required":true,"type":"string"},"has_others":{"description":"Boolean flag indicating if the column's 'other' row can be computed.","required":true,"type":"string"},"unit":{"description":"Column 'unit'. See 'reporting\/units'.","required":true,"type":"string"},"name_type":{"description":"Type of the column name. See 'reporting\/types'.","required":true,"type":"string"},"rate":{"description":"Column 'rate'. See 'reporting\/rates'.","required":true,"type":"string"}},"id":"Column","type":"object"},"required":true,"id":"Columns","type":"array"},"id":{"description":"ID for the query. Used in the API.","required":true,"type":"string"},"statistic":{"description":"Query 'statistic'. See 'reporting\/statistics'.","required":true,"type":"string"},"role":{"description":"Query 'role'. See 'reporting\/roles.'.","required":true,"type":"string"},"group_by":{"description":"Grouping of data in the query. See 'reporting\/group_bys'.","required":true,"type":"string"},"actual_t0":{"description":"Actual start time for data in the query. This could be different from the requested start time because of time interval snapping and other similar features.","required":true,"type":"number"},"parent_id":{"description":"Query ID of the query that preceeded this query and influenced data selection for it. For example, if one runs a query that returns time-series data for top 10 protocols in the network, the first query that would need to run is the one to pick top 10 protocols. That query would be the parent one to the follow-up query to get time-series data for those selected 10 protocols.","required":true,"type":"string"},"actual_t1":{"description":"Actual end time for the data in the query. See 'actual_t0' for more detail.","required":true,"type":"number"},"type":{"description":"Internal value. Reserved.","required":true,"type":"string"},"sort_col":{"description":"ID of that column that was used to sort the query when it ran.","required":true,"type":"number"},"direction":{"description":"Query 'direction. See 'reporting\/directions'.","required":true,"type":"string"},"sort_desc":{"description":"Boolean flag indicating if the sorting was in the descending order.","required":true,"type":"string"},"area":{"description":"Query 'area'. See 'reporting\/areas'.","required":true,"type":"string"},"unit":{"description":"Query 'unit'. See 'reporting\/units'.","required":true,"type":"string"},"rate":{"description":"Query 'rate'. See 'reporting\/rates.","required":true,"type":"string"}},"id":"Query","type":"object"},"id":"Queries","type":"array","example":[{"direction":"none","actual_log":"flow","actual_t0":1352319840,"sort_desc":true,"area":"none","metric":"none","sort_col":33,"parent_id":"","rate":"none","group_by":"hos","role":"none","columns":[{"strid":"ID_AVG_BYTES","metric":"net_bw","rate":"persec","statistic":"avg","id":33,"unit":"bytes","category":"data","severity":"none","area":"none","internal":false,"role":"none","cli_srv":"none","type":"float","available":true,"direction":"none","comparison":"none","sortable":true,"name":"Avg Bytes\/s","comparison_parameter":"","has_others":false,"context":false,"name_type":"colname_parts"},{"strid":"ID_AVG_BYTES_RTX","metric":"rtx","rate":"persec","statistic":"avg","id":391,"unit":"bytes","category":"data","severity":"none","area":"none","internal":false,"role":"none","cli_srv":"none","type":"float","available":false,"direction":"none","comparison":"none","sortable":true,"name":"Avg Retrans Bytes\/s","comparison_parameter":"","has_others":false,"context":false,"name_type":"colname_parts"}],"statistic":"none","type":"summary","id":"0:sum_hos_non_non_non_non_non_non_non_33_d_0","unit":"none","actual_t1":1352320200}]},"authorization":"required"},"Create report":{"description":"Generate a new report.","formats":["xml","json"],"request":{"description":"ReportInputs object.","properties":{"criteria":{"description":"Criteria neeed to run the report.","required":false,"properties":{"traffic_expression":{"description":"Traffic expression.","required":false,"type":"string"},"time_frame":{"description":"Time frame object.","required":false,"properties":{"resolution":{"description":"Report data resolution. It can be one of: 1min, 15min, hour, 6hour, day, week, month. If not specified a resolution will automatically be selected based on time frame of the report.","required":false,"type":"string"},"end":{"description":"Report end time (unix time).","required":false,"type":"number"},"expression":{"description":"Traffic expression.","required":false,"type":"string"},"start":{"description":"Report start time (unix time).","required":false,"type":"number"}},"id":"ReportTimeFrame","type":"object"},"query":{"description":"Query object.","required":false,"properties":{"columns":{"description":"Query columns. Can be many of GET \/reporting\/columns.","items":{"description":"Query column.","required":false,"type":"number"},"required":false,"id":"ReportQueryFilterColumns","type":"array"},"role":{"description":"Query role. Can be one of \/reporting\/roles.","required":false,"type":"string"},"group_by":{"description":"Query group_by. Can be one of GET \/reporting\/group_bys.","required":false,"type":"string"},"host_group_type":{"description":"Query host group type. Required for \"host group (gro)\" \"host group pairs (gpp)\" and \"host group pairs with ports (gpr)\" queries.","required":false,"type":"string"},"direction":{"description":"Query direction. Can be one of GET \/reporting\/directions.","required":false,"type":"string"},"sort_column":{"description":"Query sort column. Can be one of GET \/reporting\/columns.","required":false,"type":"number"},"area":{"description":"Query area. Can be one of GET \/reporting\/areas.","required":false,"type":"string"},"centricity":{"description":"Query centricity. Can be one of GET \/reporting\/centricities.","required":false,"type":"string"},"realm":{"description":"Query realm. Can be one of GET \/reporting\/realms.","required":true,"type":"string"}},"id":"ReportQueryFilter","type":"object"},"deprecated":{"description":"Map with legacy criteria attributes that will not be supported soon.","required":false,"additionalProperties":{"description":"ReportDeprecatedFilters map value.","required":false,"xmlKeyName":"key","type":"string"},"id":"ReportDeprecatedFilters","type":"object"}},"id":"ReportCriteria","type":"object"},"name":{"description":"Report name.","required":false,"type":"string"},"template_id":{"description":"Template ID. Can be one of GET \/reporting\/templates.","required":true,"type":"number"}},"id":"ReportInputs","type":"object","example":{"criteria":{"traffic_expression":"app WEB","time_frame":{"start":1352314764,"end":1352315064},"query":{"realm":"traffic_summary","sort_column":33,"group_by":"hos","columns":[6,33,34]}},"template_id":184,"name":"Bytes and packets for the top 20 hosts using application WEB"}},"httpmethod":"POST","path":"reporting\/reports","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"Object representing report information.","properties":{"run_time":{"description":"Time when the report was run (Unix time).","required":true,"type":"number"},"error_text":{"description":"A report can be completed with an error. Error message may provide more detailed info.","required":false,"type":"string"},"remaining_seconds":{"description":"Number of seconds remaining to run the report. Even if this number is 0, the report may not yet be completed, so check 'status' to make sure what the status is.","required":true,"type":"number"},"saved":{"description":"Boolean flag indicating if the report was saved.","required":true,"type":"string"},"id":{"description":"ID of the report. To be used in the API.","required":true,"type":"number"},"status":{"description":"Status of the report.","required":true,"type":"string","enum":["completed","running","waiting"]},"percent":{"description":"Progress of the report represented by percentage of report completion.","required":true,"type":"number"},"user_id":{"description":"ID of the user who owns the report.","required":true,"type":"number"},"size":{"description":"Size of the report in kilobytes.","required":true,"type":"number"},"name":{"description":"Name of the report. Could be given by a user or automatically generated by the system.","required":false,"type":"string"},"template_id":{"description":"ID of the template that the report is based on.","required":true,"type":"number"}},"id":"ReportInfo","type":"object","example":{"status":"completed","user_id":1,"name":"Host Information Report","percent":100,"id":1001,"remaining_seconds":0,"run_time":1352494550,"saved":true,"template_id":952,"error_text":"","size":140}},"authorization":"required"}}},"Users":{"methods":{"List users":{"description":"Get a list of user accounts.","formats":["xml","json"],"httpmethod":"GET","path":"users","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"List of user accounts on the system.","items":{"description":"User account.","required":false,"properties":{"enabled":{"description":"Boolean flag indicating if the user account is enabled.","required":true,"type":"string"},"last_name":{"description":"Last name of the user.","required":true,"type":"string"},"id":{"description":"Numeric ID of the user that the system uses internally and in the API.","required":true,"type":"number"},"last_login":{"description":"Time of last login. Unix time (epoch).","required":true,"type":"number"},"authentication_type":{"description":"Type of authentication for the user, such as Local or RADIUS.","required":true,"type":"string","enum":["Local","Remote"]},"username":{"description":"User name (short name) that identifies the user to the system, such as 'admin'.","required":true,"type":"string"},"authorization_type":{"description":"Type of authorization for the user, such as Local or RADIUS.","required":true,"type":"string","enum":["Local","Remote"]},"role":{"description":"Role of the user. Defines permissions.","required":true,"type":"string","enum":["Developer","Administrator","Operator","Monitor","Event_Viewer","Dashboard_Viewer"]},"first_name":{"description":"First name of the user.","required":true,"type":"string"},"last_access":{"description":"Time of last access to the system. Unix time (epoch).","required":true,"type":"number"},"view_packet_details":{"description":"Boolean flag indicating if the user has access to packet data.","required":false,"type":"string"},"last_authentication":{"description":"Time of last authentication. Unix time (epoch).","required":true,"type":"number"},"view_user_information":{"description":"Boolean flag indicating if the user has access to identity information, such as Active Directory information.","required":false,"type":"string"},"login_timeout":{"description":"Timeout (in seconds) during which the user cannot log in to the system because of security policies.","required":true,"type":"number"}},"id":"User","type":"object"},"id":"Users","type":"array","example":[{"username":"admin","last_authentication":1352313328,"first_name":"Jonh","last_name":"Smith","authorization_type":"Local","enabled":true,"view_user_information":true,"authentication_type":"Local","role":"Administrator","login_timeout":900,"last_login":1352313328,"last_access":1352313328,"id":123},{"username":"admin2","last_authentication":1352313328,"first_name":"Mark","last_name":"Greg","authorization_type":"Local","enabled":true,"view_user_information":true,"authentication_type":"Local","role":"Administrator","login_timeout":900,"last_login":1352313328,"last_access":1352313328,"id":124}]},"authorization":"required"},"Re-authenticate user":{"description":"Re-authenticate user account. Requires basic authentication.","httpmethod":"GET","path":"users\/re_authenticate","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"authorization":"required"},"Get user":{"description":"User account by user ID.","formats":["xml","json"],"httpmethod":"GET","path":"users\/{user_id}","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"User account.","properties":{"enabled":{"description":"Boolean flag indicating if the user account is enabled.","required":true,"type":"string"},"last_name":{"description":"Last name of the user.","required":true,"type":"string"},"id":{"description":"Numeric ID of the user that the system uses internally and in the API.","required":true,"type":"number"},"last_login":{"description":"Time of last login. Unix time (epoch).","required":true,"type":"number"},"authentication_type":{"description":"Type of authentication for the user, such as Local or RADIUS.","required":true,"type":"string","enum":["Local","Remote"]},"username":{"description":"User name (short name) that identifies the user to the system, such as 'admin'.","required":true,"type":"string"},"authorization_type":{"description":"Type of authorization for the user, such as Local or RADIUS.","required":true,"type":"string","enum":["Local","Remote"]},"role":{"description":"Role of the user. Defines permissions.","required":true,"type":"string","enum":["Developer","Administrator","Operator","Monitor","Event_Viewer","Dashboard_Viewer"]},"first_name":{"description":"First name of the user.","required":true,"type":"string"},"last_access":{"description":"Time of last access to the system. Unix time (epoch).","required":true,"type":"number"},"view_packet_details":{"description":"Boolean flag indicating if the user has access to packet data.","required":false,"type":"string"},"last_authentication":{"description":"Time of last authentication. Unix time (epoch).","required":true,"type":"number"},"view_user_information":{"description":"Boolean flag indicating if the user has access to identity information, such as Active Directory information.","required":false,"type":"string"},"login_timeout":{"description":"Timeout (in seconds) during which the user cannot log in to the system because of security policies.","required":true,"type":"number"}},"id":"User","type":"object","example":{"username":"admin","last_authentication":1352313328,"first_name":"Jonh","last_name":"Smith","authorization_type":"Local","enabled":true,"view_user_information":true,"authentication_type":"Local","role":"Administrator","login_timeout":900,"last_login":1352313328,"last_access":1352313328,"id":123}},"authorization":"required"},"Test RADIUS user":{"description":"Test a RADIUS user.","parameters":{"password":{"required":true,"type":"string","description":"RADIUS password."},"username":{"required":true,"type":"string","description":"RADIUS username."}},"formats":["xml","json"],"httpmethod":"POST","path":"users\/radius\/test_user","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"RemoteTestUserResponse object.","properties":{"role_id":{"description":"Matched role ID.","required":true,"type":"number"},"error_message":{"description":"Error message.","required":true,"type":"string"},"permission":{"description":"Matched permission name.","required":true,"type":"string"},"server_type":{"description":"Indicates the type of the server being tested: RADIUS(2) or TACACS+(3).","required":true,"type":"number"},"role":{"description":"Matched role name.","required":true,"type":"string"},"details":{"description":"Remote user test details.","required":true,"type":"string"},"permission_id":{"description":"Matched permission ID.","required":true,"type":"string"},"server_ip":{"description":"Remote Server IP address.","required":true,"type":"string"},"authenticated":{"description":"Flag indicating if the remote user was authenticated.","required":true,"type":"string"},"attributes":{"description":"Attributes of Remote Test User Response.","items":{"description":"Remote attribute.","required":false,"additionalProperties":{"description":"Remote attribute value.","required":false,"xmlKeyName":"name","type":"string"},"id":"RemoteAttributes","type":"object"},"required":false,"id":"RemoteAttributesList","type":"array"},"authorized":{"description":"Flag indicating if the remote user was authorized (as Administrator, Monitor, etc).","required":true,"type":"string"}},"id":"RemoteTestUserResponse","type":"object","example":{"error_message":"","authenticated":true,"server_type":2,"permission_id":"","permission":"","role_id":0,"role":"","authorized":false,"server_ip":"10.38.8.112:1812","attributes":[{"25":"operatorClass"},{"25":"monitorClass"},{"25":"eventviewerClass"},{"17164":"unMappedRole"},{"17164":"monitorCascade"},{"17164":"eventviewerCascade"},{"17164":"dashboardCascade"},{"25":"DBAccess"},{"25":"dashboardClass"},{"17164":"AbC10~!@#$%^&*()_+{}|[]:;<>?\/.'z"},{"17164":"operatorCascade"},{"LOGIN_SERVER":"10.38.8.112:1812"},{"25":"adminClass1"},{"25":"unMappedClass"},{"25":"eventviewerClass"},{"17164":"adminCascade"}],"details":"Using 10.38.8.112:1812 - Unable to match a role."}},"authorization":"required"},"Test RADIUS server":{"description":"Test the connection to a RADIUS server.","parameters":{"server":{"required":true,"type":"string","description":"RADIUS server identifier, example server=IP:PORT."}},"formats":["xml","json"],"httpmethod":"GET","path":"users\/radius\/test_server","authorization_methods":["BASIC","COOKIE","OAUTH_2_0"],"response":{"description":"RemoteTestServerResponse object.","properties":{"success":{"description":"Flag indicating if the remote server test was successful.","required":true,"type":"string"},"message":{"description":"Response message.","required":true,"type":"string"}},"id":"RemoteTestServerResponse","type":"object","example":{"message":"Connection attempt succeeded","success":true}},"authorization":"required"}}}},"description":"
\nThe documentation pages in this section describe\nthe RESTful APIs included with Cascade Profiler and Cascade Express\nproducts. It is assumed that the reader has practical knowledge of\nRESTful APIs, so the documentation does not go into detail about what\nREST is and how to use it. Instead the documentation focuses on what\ndata can be accessed and how to access it.\n<\/p>\n\n
\nThe primary focus of the current version of the API is on providing\naccess to reporting data. The following information can be accessed\nvia the API:\n<\/p>\n
\nDetails about REST resources can be found in the Resources<\/b>\nsection. This overview continues with how to run reports and retrieve\ndata from them.\n<\/p>\n\nRunning a report<\/h2>\n\n
\nThe steps for running a report are described below. An easy way to\nlearn how to run reports and get data is to use the Demo\nReports<\/b> section of this documentation. In that section a number of\nexample reports are listed. If you click on any of the examples, the\nreport will run along with a listing on the right side of the screen\nfor each step in the process. It displays the REST resource, HTTP\nmethod, headers and body for both the request and response.\n<\/p>\n\n
\nFollow these steps to run a report:\n<\/p>\n\n
\nA criteria structure in either JSON or XML is submitted to the server\nusing the HTTP POST method. The resource to which the criteria\nstructure is posted is\ncalled \/profiler\/1.0\/reporting\/reports<\/b>. The details are\ndescribed in the Resources<\/b> section of this documentation.\n<\/p>\n\n
\nA key part of the report criteria is the ID of the template that\nshould be used to run the report. A special system template ID 184\nthat provides a high degree of flexibility is used in demo reports in\nthis documentation. Additionally, any template that is saved via the\nuser interface of the product can be used to run a report. In order to\nsave a template, the ID of that template must be passed in the report\ncriteria structure instead of 184. A template can be configured via\nthe user interface, saved via the product and then used in the REST\nAPI to generate reports and retrieve them in a rendered form or in raw\ndata form. Once a template is saved, its ID can be obtained\nvia the \/api\/profiler\/1.0\/reporting\/templates<\/b> REST resource.\n<\/p>\n\n2. Poll report status until the report completes.<\/h3>\n\n
\nIt may take a while for a report to complete. While the report is\nrunning, the client must poll for report status to know when the\nreport completes. When the call to create a new report succeeds, it\nreturns the URL for the newly created report. That URL may look\nsimilar to \/profiler\/1.0\/reporting\/reports\/1000<\/i>, which is the ID of\nthe new report.\n<\/p>\n\n
\nThe general way to describe this in REST documentation is\n\/profiler\/1.0\/reporting\/reports\/{id}<\/b> so this documentation uses\nthat syntax throughout. Note that the client does not need to know\nthat {id}<\/b> is really an ID of a report. Instead the client should\ntreat a given report, for example\n\/profiler\/1.0\/reporting\/reports\/1000, as a REST resource without\nparsing the parts of the URL.\n<\/p>\n\n
\nThe status of a report can be obtained by executing a GET method on\nthe report URL. The client should wait while the report is running and\nuntil the status turns to state.\n<\/p>\n\n
\nOnce the report completes, the client can retrieve its data or the\nrendered version of the report in a number of formats.\n<\/p>\n\n
\nThe following resources can be used to retrieve a rendered version of the report:\n
\nIf the client is a script that needs access to raw data, the\n\/profiler\/1.0\/reporting\/reports\/{id}\/queries<\/b> resource can be\nused with the GET method to obtain the list of elements (queries)\nfirst. The data shown in a typical report on the user interface may\ncome from more than one query, which is why the report structure needs\nto be determined first. However, the system template 184 described\nabove will have only one query and is easy to use for simple scripts.\n<\/p>\n\n
\nEach query resource provides metadata about the query, such as\nthe list of columns with descriptions of what the columns are. \n<\/p>\n\n
\nOnce the query is chosen, the\n\/profiler\/1.0\/reporting\/reports\/{id}\/queries\/{id}<\/b> resource can be used\nto get the report data.\n<\/p>\n\n
\nThe simple overview provided above cannot substitute for full\ndocumentation and it is not intended to do so. Please refer to Demo\nReports<\/b> section to see how reports are run. Look at the Coding\nExamples<\/b> under General Information<\/b> and\nexplore Resources<\/b> section of this documentation for more\ninformation.\n<\/p>\n\nAuthentication<\/h2>\n\n
\nAll REST requests must be authenticated. The Authentication<\/b>\nsection of the Common 1.0 API describes which authentication methods\nare presently supported. There are also examples that show how to use\neach of the different authentication methods.\n<\/p>\n\nRunning a report: Sample PHP script<\/h2>\n\n
Run a report to get bytes and packets for the top 20 hosts using the application WEB. Use BASIC Authentication.<\/p>\n\n 184,\n 'criteria' => Array('time_frame' => array('start' => $start,\n 'end' => $end),\n 'traffic_expression' => 'app WEB',\n 'query' => array('realm' => 'traffic_summary',\n 'group_by' => 'hos',\n 'sort_column' => 33,\n 'columns' => array(6, 33, 34))));\n \n $json = json_encode($struct);\n $columns = $struct['criteria']['query']['columns'];\n \n \/\/ Post to run the report\n $url = 'https:\/\/' . HOST . '\/api\/profiler\/1.0\/reporting\/reports.json';\n echo \"Run report:\\nPOST {$url}\\n{$json}\\n\\n\";\n $info = array();\n do_POST($url, $json, $info);\n if ($info['http_code'] != 201) {\n echo \"Unable to run report!\\n\";\n exit(1);\n }\n $location = get_header($info['headers'], 'Location');\n echo \"Generated: {$location}\\n\\n\";\n $status_url = 'https:\/\/' . HOST . '' . $location . '.json';\n \n \/\/ Wait for it to complete\n echo \"Please wait\\n\";\n while (true) {\n $info = array();\n $output = do_GET($status_url, $info);\n $s = json_decode($output, 1);\n print \" Percent completed {$s['percent']}, seconds remaining {$s['remaining_seconds']}...\\n\";\n if ($s['status'] == 'completed') {\n echo \"Completed\\n\\n\";\n break;\n }\n sleep(1);\n }\n \n \/\/ Get all quesries (In this exampe it is only one)\n $queries_url = 'https:\/\/' . HOST . '' . $location . '\/queries.json';\n $output = do_GET($queries_url, $info);\n $queries = json_decode($output, 1);\n \n \/\/ Print the data from all queries\n foreach ($queries as $q) {\n $query_id = $q['id'];\n $data_url = 'https:\/\/' . HOST . '' . $location . '\/queries\/' . $query_id . '.json?offset=0&limit=20&columns=' . join(',', $columns);\n $info = array();\n $output = do_GET($data_url, $info);\n $data = json_decode($output, 1);\n \n $h = array();\n foreach ($columns as $c)\n $h[] = find_column_name_by_id($q['columns'], $c);\n \n echo_csv($h, $data['data']);\n echo \"\\n\";\n }\n \n ?>\n
Run a report to get bytes and packets for the top 20 hosts using the application WEB. Use BASIC Authentication.<\/p>\n\n from urlparse import urlparse\n import base64\n import logging\n import httplib\n import json\n import time\n import sys\n \n HOST = '127.0.0.1'\n BASIC_AUTH = 'admin:admin'\n \n end = int(time.time() - 3*60)\n start = int(end - 5*60);\n \n # Lib functions\n \n def do_POST(url, string):\n '''HTTP POST'''\n \n conn = httplib.HTTPSConnection(HOST, 443)\n \n headers = {\"Authorization\" : \"Basic %s\" % base64.b64encode(BASIC_AUTH),\n \"Content-Length\" : str(len(string)),\n \"Content-Type\" : \"application\/json\"}\n \n conn.request('POST', url, body=string, headers=headers)\n \n res = conn.getresponse()\n \n info = {\"status\" : res.status,\n \"headers\" : res.getheaders()}\n \n data = res.read()\n conn.close()\n return data, info\n \n def do_GET(url):\n '''HTTP GET'''\n \n conn = httplib.HTTPSConnection(HOST, 443)\n \n headers = {\"Authorization\" : \"Basic %s\" % base64.b64encode(BASIC_AUTH),\n \"Content-Length\" : 0,\n \"Content-Type\" : \"application\/json\"}\n \n conn.request('GET', url, body=\"\", headers=headers)\n \n res = conn.getresponse()\n \n info = {\"status\" : res.status,\n \"headers\" : res.getheaders()}\n \n data = res.read()\n conn.close()\n return data, info\n \n def get_header(headers, header):\n '''Finds and returns HTTP header'''\n for i in headers:\n if (i[0] == header):\n return i[1]\n return \"\"\n \n def find_column_name_by_id(columns, cid):\n '''Locates a column by id and returns the name'''\n for c in columns:\n if (c['id'] == cid):\n return c['name']\n return 'Unknown'\n \n def echo_csv(headers, rows):\n '''CSV helper'''\n print ','.join(headers)\n for row in rows:\n print ','.join(row)\n \n # End lib functions\n \n struct = {\n \"template_id\" : 184,\n \"criteria\" : {\n \"time_frame\" : {\n \"start\" : start,\n \"end\" : end\n },\n \"traffic_expression\" : \"app WEB\",\n \"query\" : {\n \"realm\" : \"traffic_summary\",\n \"group_by\" : \"hos\",\n \"sort_column\": 33,\n \"columns\" : [6, 33, 34]\n }\n }\n }\n \n to_post = json.dumps(struct)\n columns = struct[\"criteria\"][\"query\"][\"columns\"]\n \n # Post to run the report\n url = \"https:\/\/%s\/api\/profiler\/1.0\/reporting\/reports.json\" % HOST\n print \"Run report:\"\n print \"POST %s\" % url\n print \"%s\" % to_post\n \n output, info = do_POST(url, to_post)\n if (info['status'] is not 201):\n print \"Unable to run report\"\n sys.exit(1)\n \n location = get_header(info['headers'], 'location')\n print \"\"\n print \"Generated: %s\" % location\n print \"\"\n \n status_url = \"https:\/\/%s%s.json\" % (HOST, location)\n \n # Wait for it to complete\n print \"Please wait\"\n while (True):\n output, info = do_GET(status_url)\n s = json.loads(output)\n print \"Percent completed %s, seconds remaining %s...\" % (s[\"percent\"], s[\"remaining_seconds\"])\n if (s[\"status\"] == \"completed\"):\n print \"Completed\"\n break\n time.sleep(1)\n \n # Get all quesries (In this exampe it is only one)\n queries_url = \"https:\/\/%s%s\/queries.json\" % (HOST, location)\n \n output, info = do_GET(queries_url)\n queries = json.loads(output)\n \n # Print the data from all queries\n for q in queries:\n query_id = q['id'];\n columns_str = ','.join([repr(i) for i in columns])\n data_url = \"https:\/\/%s%s\/queries\/%s.json?offset=0&limit=20&columns=%s\" % (HOST, location, query_id, columns_str)\n output, info = do_GET(data_url)\n data = json.loads(output)\n \n h = []\n for c in columns:\n h.append(find_column_name_by_id(q[\"columns\"], c))\n \n print \"\" \n echo_csv(h, data[\"data\"])\n
Run a report to get bytes and packets for the top 20 hosts using the application WEB. Use BASIC Authentication.<\/p>\n\n #!\/usr\/bin\/perl\n use strict;\n use warnings;\n \n use LWP::UserAgent;\n use HTTP::Request;\n use List::MoreUtils qw(firstidx);\n use JSON qw( encode_json decode_json );\n \n use constant HOST => '127.0.0.1';\n use constant LOGIN => 'admin';\n use constant PASSWORD => 'admin';\n \n our $ua = LWP::UserAgent->new;\n $ua->agent(\"ProfilerScript\/0.1\");\n \n our $API_BASE = \"https:\/\/127.0.0.1\";\n \n sub _request($) \n {\n my $req = shift;\n \n $req->header('Accept' => 'application\/json');\n $req->authorization_basic(LOGIN, PASSWORD);\n \n my $res = $ua->request($req);\n \n return {\n code => $res->code,\n status => $res->status_line,\n headers => $res->headers(),\n data => decode_json($res->content)\n };\n }\n \n sub GET($) \n {\n my $req = HTTP::Request->new(GET => $API_BASE . shift);\n return _request($req);\n }\n \n sub POST($$) \n {\n my $req = HTTP::Request->new(POST => $API_BASE . shift);\n $req->content_type('application\/json');\n $req->content(encode_json(shift));\n \n return _request($req);\n }\n \n my $end = time();\n my $start = $end - 5 * 60;\n \n my $struct = { \n template_id => 184, \n criteria => { \n time_frame => { \n start => $start, \n end => $end \n }, \n traffic_expression => \"app WEB\", \n query => { \n realm => \"traffic_summary\", \n group_by => \"hos\", \n sort_column => 33, \n columns => [6, 33, 34] \n } \n } \n };\n \n print \"Running report... \";\n \n my $response = POST('\/api\/profiler\/1.0\/reporting\/reports', $struct);\n die \"Unable to run report. $response->{data}->{error_text}\" unless $response->{code} == 201;\n \n my $loc = $response->{headers}->header('Location');\n \n while (1) \n {\n $response = GET($loc);\n printf \"\\rRunning report, %3d%% done, %d seconds remaining... \", \n $response->{data}->{percent}, \n $response->{data}->{remaining_seconds};\n \n last if $response->{data}->{status} eq 'completed';\n sleep(1);\n };\n \n print \"\\nLoading data...\\n\";\n \n $response = GET($loc . '\/queries');\n die \"Unable to load queries. $response->{data}->{error_text}\" unless $response->{code} == 200;\n \n foreach my $query (@{$response->{data}})\n {\n my @columns = @{$struct->{criteria}->{query}->{columns}};\n my $columns = join ',', @columns;\n \n my $data_response = GET(\"$loc\/queries\/$query->{id}?offset=0&limit=20&columns=$columns\");\n die \"Unable to load data. $response->{data}->{error_text}\" unless $response->{code} == 200;\n \n my @indices = map { my $id = $_; firstidx { $_->{id} == $id } @{$query->{columns}} } @columns;\n \n print join \",\", map { qq~\"$query->{columns}->[$_]->{name}\"~; } @indices;\n print \"\\n\";\n \n foreach my $row (@{$data_response->{data}->{data}}) {\n print join \",\", @$row;\n print \"\\n\";\n }\n }\n
Run a report to get bytes and packets for the top 20 hosts using the application WEB. Use BASIC Authentication.<\/p>\n\n
Program.cs:<\/b><\/p>\n\n using System;\n using System.Collections.Generic;\n using System.Net;\n using System.Runtime.Serialization.Json;\n using System.Text;\n using System.IO;\n using System.Net.Security;\n using System.Security.Cryptography.X509Certificates;\n using System.Linq;\n using System.Threading;\n using System.Web.Script.Serialization;\n \n namespace CascadeRestClient\n {\n public class ReportUpdate\n {\n public string status { get; set; }\n public string user_id { get; set; }\n public string name { get; set; }\n public string percent { get; set; }\n public string id { get; set; }\n public string remaining_seconds { get; set; }\n public string run_time { get; set; }\n public string saved { get; set; }\n public string template_id { get; set; }\n public string size { get; set; }\n }\n \n public class Column\n {\n public string strid { get; set; }\n public string metric { get; set; }\n public string rate { get; set; }\n public string statistic { get; set; }\n public int id { get; set; }\n public string unit { get; set; }\n public string category { get; set; }\n public string severity { get; set; }\n public string area { get; set; }\n public bool @internal { get; set; }\n public string role { get; set; }\n public string cli_srv { get; set; }\n public string type { get; set; }\n public bool available { get; set; }\n public string direction { get; set; }\n public string comparison { get; set; }\n public bool sortable { get; set; }\n public string name { get; set; }\n public string comparison_parameter { get; set; }\n public bool has_others { get; set; }\n public bool context { get; set; }\n public string name_type { get; set; }\n }\n \n public class QueryResult\n {\n public string direction { get; set; }\n public string actual_log { get; set; }\n public int actual_t0 { get; set; }\n public bool sort_desc { get; set; }\n public string area { get; set; }\n public string metric { get; set; }\n public int sort_col { get; set; }\n public string parent_id { get; set; }\n public string rate { get; set; }\n public string group_by { get; set; }\n public string role { get; set; }\n public List<Column> columns { get; set; }\n public string statistic { get; set; }\n public string type { get; set; }\n public string id { get; set; }\n public string unit { get; set; }\n public int actual_t1 { get; set; }\n }\n \n public class QueryData\n {\n public List<List<string>> data { get; set; }\n public int data_size { get; set; }\n public List<string> totals { get; set; }\n }\n \n class Program\n {\n static string BASIC_AUTH = \"admin:admin\";\n \n \/\/ callback used to validate the self-gen certificate in an SSL conversation\n private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)\n {\n return true;\n \/*\n X509Certificate2 certv2 = new X509Certificate2(cert);\n if (certv2.GetNameInfo(X509NameType.SimpleName,true) == \"www.riverbed.com\")\n return true;\n \n return false;\n *\/\n }\n \n static void Main(string[] args)\n {\n if (args.Length == 0 || string.IsNullOrWhiteSpace(args[0]))\n {\n Console.WriteLine(\"Usage: CascadeRestClient hostname\");\n return;\n }\n try\n {\n \/\/Code to allow run with self-signed certificates\n \/\/ validate cert by calling a function\n ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);\n \n \/\/Starting to run rest \n string rootUrl = \"https:\/\/\" + args[0];\n string requestUrl = rootUrl + \"\/api\/profiler\/1.0\/reporting\/reports.json\";\n string location;\n \n int start = (int)((DateTime.Now - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds) - 8*60; \/\/8 minutes before in unix time\n int end = start + 5*60; \/\/3 minutes before in unix time\n \n var jsondata = new\n {\n template_id = 184,\n criteria = new\n {\n time_frame = new\n {\n start = start,\n end = end\n },\n \n traffic_expression = \"app WEB\",\n query = new\n {\n realm = \"traffic_summary\",\n group_by = \"hos\",\n sort_column = 33,\n columns = new List<int> { 6, 33, 34 }\n }\n }\n };\n \n \/\/Serialize anomymous type to json\n JavaScriptSerializer serializer = new JavaScriptSerializer();\n string postData = serializer.Serialize(jsondata);\n \n Console.WriteLine(\"Run report:\");\n Console.WriteLine(\"POST \" + requestUrl);\n Console.WriteLine(postData + Environment.NewLine);\n \n \/\/ Post to run the report\n var runReportResponse = MakeRequest<ReportUpdate>(requestUrl, WebRequestMethods.Http.Post, out location, postData);\n Console.WriteLine(\"Generated \" + location + Environment.NewLine);\n requestUrl = rootUrl + location;\n Console.WriteLine(\"Please wait\");\n while (runReportResponse.status != \"completed\")\n {\n runReportResponse = MakeRequest<ReportUpdate>(requestUrl + \".json\", WebRequestMethods.Http.Get, out location);\n Console.WriteLine(string.Format(\"Percent completed {0}, seconds remaining {1}\",runReportResponse.percent, runReportResponse.remaining_seconds));\n Thread.Sleep(1000);\n }\n Console.WriteLine(\"Completed\"+ Environment.NewLine);\n \n \/\/ Get all quesries (In this example it is only one)\n var getQueriesResponse = MakeRequest<List<QueryResult>>(requestUrl +\"\/queries.json\", WebRequestMethods.Http.Get, out location);\n string columns = jsondata.criteria.query.columns.Select(c=>c.ToString()).Aggregate((i, j) => i + \",\" + j);\n \/\/ Print the data from all queries\n foreach (var query in getQueriesResponse) {\n var qr = MakeRequest<QueryData>(requestUrl + \"\/queries\/\" + query.id + \".json?offset=0&limit=20&columns=\" + columns,\n WebRequestMethods.Http.Get, out location);\n string columnList = jsondata.criteria.query.columns.Select(c=>query.columns.Where(col => col.id == c).First().name)\n .Aggregate((l,r) => l + \",\" + r);\n Console.WriteLine(columnList);\n \n foreach (var dr in qr.data)\n {\n Console.WriteLine(dr.Aggregate((i, j) => i + ',' + j));\n }\n }\n }\n catch (Exception e)\n {\n Console.WriteLine(e.Message);\n }\n }\n \n \n private static string Base64Encode(string toEncode)\n {\n byte[] toEncodeAsBytes\n = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);\n return System.Convert.ToBase64String(toEncodeAsBytes);\n }\n \n \/\/\/ <summary>\n \/\/\/ Make request\n \/\/\/ <\/summary>\n \/\/\/ <typeparam name=\"T\">return type<\/typeparam>\n \/\/\/ <param name=\"requestUrl\">url for request<\/param>\n \/\/\/ <param name=\"action\">Http Verb, Get, Post etc<\/param>\n \/\/\/ <param name=\"location\">location returned from response header <\/param>\n \/\/\/ <param name=\"requestData\">Data posted<\/param>\n \/\/\/ <returns><\/returns>\n private static T MakeRequest<T>(string requestUrl, string action, out string location, string requestData = null) where T : class\n {\n HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;\n request.Headers.Add(\"Authorization: Basic \" + Base64Encode(BASIC_AUTH));\n request.ContentType = \"application\/json\";\n request.Method = action;\n if (requestData == null)\n {\n request.ContentLength = 0;\n }\n else\n {\n ASCIIEncoding encoding = new ASCIIEncoding();\n byte[] byte1 = encoding.GetBytes(requestData);\n request.ContentLength = byte1.Length;\n using (Stream newStream = request.GetRequestStream())\n {\n newStream.Write(byte1, 0, byte1.Length);\n }\n }\n \n using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)\n {\n if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)\n throw new Exception(String.Format(\n \"Unable to run report! StatusCode={0}, Description={1}\",\n response.StatusCode,\n response.StatusDescription));\n location = response.Headers[HttpResponseHeader.Location];\n DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));\n object objResponse = jsonSerializer.ReadObject(response.GetResponseStream());\n return objResponse as T;\n }\n }\n }\n }\n\n
CascadeRestClient.csproj:<\/b><\/p>\n <?xml version=\"1.0\" encoding=\"utf-8\"?>\n <Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http:\/\/schemas.microsoft.com\/developer\/msbuild\/2003\">\n <PropertyGroup>\n <Configuration Condition=\" '$(Configuration)' == '' \">Debug<\/Configuration>\n <Platform Condition=\" '$(Platform)' == '' \">x86<\/Platform>\n <ProductVersion>8.0.30703<\/ProductVersion>\n <SchemaVersion>2.0<\/SchemaVersion>\n <ProjectGuid>{4ED69347-523B-46AB-B259-47EF60D4F13A}<\/ProjectGuid>\n <OutputType>Exe<\/OutputType>\n <AppDesignerFolder>Properties<\/AppDesignerFolder>\n <RootNamespace>CascadeRestClient<\/RootNamespace>\n <AssemblyName>CascadeRestClient<\/AssemblyName>\n <TargetFrameworkVersion>v4.0<\/TargetFrameworkVersion>\n <TargetFrameworkProfile>\n <\/TargetFrameworkProfile>\n <FileAlignment>512<\/FileAlignment>\n <\/PropertyGroup>\n <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n <PlatformTarget>x86<\/PlatformTarget>\n <DebugSymbols>true<\/DebugSymbols>\n <DebugType>full<\/DebugType>\n <Optimize>false<\/Optimize>\n <OutputPath>bin\\Debug\\<\/OutputPath>\n <DefineConstants>DEBUG;TRACE<\/DefineConstants>\n <ErrorReport>prompt<\/ErrorReport>\n <WarningLevel>4<\/WarningLevel>\n <\/PropertyGroup>\n <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n <PlatformTarget>x86<\/PlatformTarget>\n <DebugType>pdbonly<\/DebugType>\n <Optimize>true<\/Optimize>\n <OutputPath>bin\\Release\\<\/OutputPath>\n <DefineConstants>TRACE<\/DefineConstants>\n <ErrorReport>prompt<\/ErrorReport>\n <WarningLevel>4<\/WarningLevel>\n <\/PropertyGroup>\n <ItemGroup>\n <Reference Include=\"System\" \/>\n <Reference Include=\"System.Core\" \/>\n <Reference Include=\"System.Runtime.Serialization\" \/>\n <Reference Include=\"System.Web.Extensions\">\n <HintPath>..\\..\\..\\..\\..\\..\\..\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.0\\System.Web.Extensions.dll<\/HintPath>\n <\/Reference>\n <Reference Include=\"System.Xml.Linq\" \/>\n <Reference Include=\"System.Data.DataSetExtensions\" \/>\n <Reference Include=\"Microsoft.CSharp\" \/>\n <Reference Include=\"System.Data\" \/>\n <Reference Include=\"System.Xml\" \/>\n <\/ItemGroup>\n <ItemGroup>\n <Compile Include=\"Program.cs\" \/>\n <Compile Include=\"Properties\\AssemblyInfo.cs\" \/>\n <\/ItemGroup>\n <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" \/>\n <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n Other similar extension points exist, see Microsoft.Common.targets.\n <Target Name=\"BeforeBuild\">\n <\/Target>\n <Target Name=\"AfterBuild\">\n <\/Target>\n -->\n <\/Project>\n"}