The following shows how to generate the urlerrorresponses-by-url
report using either the Reporting API's Generate a report POST operation or the Get a cacheable report GET operation. Details about each report's supported products, metrics, filters, and available data intervals are also available dynamically by running the API's Get a report type operation, also shown below. See also other available reports.
Report definition
Returns traffic data for URLs returning error responses.
Business object: cpcode
Data available for: 92 days
Available metrics
Metric | Description | |
---|---|---|
Data metrics | ||
0XXEdgeHits | The total number of hits from Akamai to the end user returning 0XX responses. | |
4XXEdgeHits | The total number of hits from Akamai to end user returning 4XX responses. |
Available filters
Filter | Type | Description |
---|---|---|
Optional filters | ||
delivery_type | Enumeration | Distinguishes secure from non-secure traffic. Optional. No selection returns both secure and non-secure traffic. |
secure : Secure traffic. | ||
non_secure : Non-secure traffic. | ||
url_contain | String | URL contains the specified string. |
url_end_with | String | URL ends with the specified string. |
url_exact_match | String | URL is an exact match for the specified string. |
url_match | String | URL matches the specified string. |
url_not_contain | String | URL does not contain the specified string. |
url_not_end_with | String | URL does not end with the specified string. |
url_not_match | String | URL does not match the specified string. |
url_not_start_with | String | URL does not start with the specified string. |
url_start_with | String | URL starts with the specified string. |
The use of negative filters
For this report, the negative filters, such as
url_not_start_with
orurl_not_contain
, use the OR logic, which means you can only use one filter value at a time. Otherwise, the filters may not work in the expected way.
POST request
POST /reporting-api/v1/reports/urlerrorresponses-by-url/versions/1/report-data{?start,end}
Sample: /reporting-api/v1/reports/urlerrorresponses-by-url/versions/1/report-data?start=2020-05-01T00%3A00%3A00Z&end=2020-06-01T00%3A00%3A00Z
Query parameters
Parameter | Type | Sample | Description |
---|---|---|---|
Required | |||
start | String | 2020-05-01T00:00:00Z | Specifies the start of the reported period as an ISO-8601 timestamp with optional time zone. The report includes data that matches the start value's timestamp. |
end | String | 2020-06-01T00:00:00Z | Specifies the end of the reported period as an ISO-8601 timestamp with optional time zone. The report excludes any data that matches the end value's timestamp. |
JSON request members
Member | Type | Description |
---|---|---|
objectIds | Array | Specifies the set of cpcode values you want to report on. |
objectIds | Enumeration | As an alternative to an array of ID values, specify all as a string for unfiltered data. Either way, objectIds is required. |
metrics | Array | The set of desired metrics. If omitted, the report includes all available metrics. |
filters | Map of arrays | Specifies a set of custom filters, with each filter's name keying an array with each filter's set of values. |
limit | Number | This numeric parameter is optional, by default 500, and not greater than 25000. |
Request body:
{
"objectIds": [
"55232",
"23433",
"32433"
],
"metrics": [
"0XXEdgeHits",
"4XXEdgeHits"
],
"filters": {
"delivery_type": [
"secure",
"non-secure"
],
"url_contain": [
"/shop",
"/about"
],
"url_end_with": [
".html",
".jsp"
],
"url_exact_match": [
"https://www.example.com/shop/index.html",
"https://www.example.com/about/index.html"
],
"url_match": [
"https://www.example.com/shop",
"https://www.example.com/about"
],
"url_not_contain": [
"/blog",
"/contact"
],
"url_not_end_with": [
".pdf",
".css"
],
"url_not_match": [
"https://www.example.com/blog",
"https://www.example.com/contact"
],
"url_not_start_with": [
"email:",
"ftp:"
],
"url_start_with": [
"http:",
"https:"
]
}
}
GET request
GET /reporting-api/v1/reports/urlerrorresponses-by-url/versions/1/report-data{?start,end,objectIds,allObjectIds,metrics,filters}
Sample: /reporting-api/v1/reports/urlerrorresponses-by-url/versions/1/report-data?start=2020-05-01T00%3A00%3A00Z&end=2020-06-01T00%3A00%3A00Z&objectIds=55232,23433,32433&metrics=0XXEdgeHits%2C4XXEdgeHits&filters=delivery_type%3Dsecure%2Cdelivery_type%3Dnon-secure%2Curl_contain%3D%2Fshop%2Curl_contain%3D%2Fabout
Query parameters
Parameter | Type | Sample | Description |
---|---|---|---|
Required | |||
start | String | 2022-06-23T13:55:00Z | Specifies the start of the reported period as an ISO-8601 timestamp with optional time zone. The report includes data that matches the start value’s timestamp. |
end | String | 2022-06-23T14:15:00Z | Specifies the end of the reported period as an ISO-8601 timestamp with optional time zone. The report excludes any data that matches the end value’s timestamp. |
Optional | |||
allObjectIds | Boolean | true | As an alternative to objectIds , enabling this generates a report that includes all IDs available for the cpcode objectType. This parameter is ignored if the request also specifies a set of objectIds. |
objectIds | String | 55232,23433,32433 | As an alternative to allObjectIds , specifies the set of unique IDs for the cpcode objectType you want to report on, formatted as a comma-delimited list. |
metrics | String | 0XXEdgeHits,4XXEdgeHits | Specifies a comma-separated list of metrics to include in the report, otherwise all metrics if omitted. The set of available metrics depends on the type of report. URL-encode the entire value in the GET request. |
filters | String | delivery_type=secure,delivery_type=non-secure,url_contain=/shop,url_contain=/about | Specifies criteria to filter the report's data. The set of available filters depends on the type of report. Separate each filter name and value with an equals (= ) character, and separate various name/value pairs with commas (, ). To specify more than one filter value, repeat the filter name. See the accompanying example for guidance. URL-encode the entire value in the GET request. |
limit | Number | This numeric parameter is optional, by default 500, and not greater than 25000. |
JSON response
Status 200 application/json
Response body:
{
"metadata": {
"name": "urlerrorresponses-by-url",
"version": "1",
"outputType": "FLAT",
"groupBy": [
"hostname.url"
],
"start": "2020-05-01T00:00:00Z",
"end": "2020-06-01T00:00:00Z",
"availableDataEnds": null,
"suggestedRetryTime": null,
"rowCount": 4,
"filters": [
{
"name": "delivery_type",
"values": [
"secure",
"non-secure"
]
},
{
"name": "url_contain",
"values": [
"/shop",
"/about"
]
},
{
"name": "url_end_with",
"values": [
".html",
".jsp"
]
},
{
"name": "url_exact_match",
"values": [
"https://www.example.com/shop/index.html",
"https://www.example.com/about/index.html"
]
},
{
"name": "url_match",
"values": [
"https://www.example.com/shop",
"https://www.example.com/about"
]
},
{
"name": "url_not_contain",
"values": [
"/blog",
"/contact"
]
},
{
"name": "url_not_end_with",
"values": [
".js",
".css"
]
},
{
"name": "url_not_match",
"values": [
"https://www.example.com/blog",
"https://www.example.com/contact"
]
},
{
"name": "url_not_start_with",
"values": [
"email:",
"ftp:"
]
},
{
"name": "url_start_with",
"values": [
"http:",
"https:"
]
}
],
"columns": [
{
"name": "groupBy",
"label": "hostname.url"
},
{
"name": "0XXEdgeHits",
"label": "Edge Hits"
},
{
"name": "4XXEdgeHits",
"label": "Edge Hits"
}
],
"objectType": "cpcode",
"objectIds": [
"55232",
"23433",
"32433"
]
},
"data": [
{
"hostname.url": "example.com/live/service",
"0XXEdgeHits": "95",
"4XXEdgeHits": "3110"
},
{
"hostname.url": "data.example.com/download/file",
"0XXEdgeHits": "127",
"4XXEdgeHits": "108"
},
{
"hostname.url": "example.com/static/css",
"0XXEdgeHits": "2155",
"4XXEdgeHits": "4146"
},
{
"hostname.url": "example.com/static/html",
"0XXEdgeHits": "3981",
"4XXEdgeHits": "559"
}
],
"summaryStatistics": {}
}
CSV response
Status 200 text/csv
Response Body:
#METADATA_START
name,urlerrorresponses-by-url
version,1
source,urlerrorresponses-by-url/versions/1
groupBy,hostname.url
start,2020-05-01T00:00:00Z
end,2020-06-01T00:00:00Z
availableDataEnds,
suggestedRetryTime,
rowCount,4
objectType,cpcode
objectIds,55232,23433,32433
delivery_type,secure,non-secure
url_contain,/shop,/about
url_end_with,.html,.jsp
url_exact_match,https://www.example.com/shop/index.html,https://www.example.com/about/index.html
url_match,https://www.example.com/shop,https://www.example.com/about
url_not_contain,/blog,/contact
url_not_end_with,.js,.css
url_not_match,https://www.example.com/blog,https://www.example.com/contact
url_not_start_with,email:,ftp:
url_start_with,http:,https:
#METADATA_END
#SUMMARYSTATISTICS_START
#SUMMARYSTATISTICS_END
#COLUMNS_START
hostname.url,0XXEdgeHits,4XXEdgeHits
#COLUMNS_END
#DATA_START
example.com/live/service,95,3110
data.example.com/download/file,127,108
example.com/static/css,2155,4146
example.com/static/html,3981,559
#DATA_END
Get report details
This sample Get a report type operation gets the same information you need to run the urlerrorresponses-by-url
report as provided in this reference documentation, but available dynamically to your API client application.
GET /reporting-api/v1/reports/urlerrorresponses-by-url/versions/1
Status 200 application/json
Response body:
{
"name": "urlerrorresponses-by-url",
"description": "Returns traffic data for URLs returning error responses.",
"businessObjectName": "cpcode",
"version": 1,
"status": "PUBLISHED",
"deprecated": false,
"timeBased": false,
"outputType": "FLAT",
"requiredProducts": [
"Basic Traffic Reports"
],
"requiredRoles": [
"Reports - All privileges",
"Reports - View only",
"OTA App User"
],
"available": true,
"metrics": [
{
"name": "4XXEdgeHits",
"description": "The total number of hits from Akamai to end user returning 4XX responses.",
"label": "Edge Hits",
"unit": "COUNT",
"summaryStatistic": false
},
{
"name": "0XXEdgeHits",
"description": "The total number of hits from Akamai to the end user returning 0XX responses.",
"label": "Edge Hits",
"unit": "COUNT",
"summaryStatistic": false
}
],
"groupOutlyingValues": {
"enabled": false
},
"groupBy": [
"hostname.url"
],
"filters": [
{
"name": "url_exact_match",
"type": "string",
"description": "URL is an exact match for the specified string.",
"required": false
},
{
"name": "url_contain",
"type": "string",
"description": "URL contains the specified string.",
"required": false
},
{
"name": "url_not_end_with",
"type": "string",
"description": "URL does not end with the specified string.",
"required": false
},
{
"name": "url_end_with",
"type": "string",
"description": "URL ends with the specified string.",
"required": false
},
{
"name": "url_match",
"type": "string",
"description": "URL matches the specified string.",
"required": false
},
{
"name": "url_not_contain",
"type": "string",
"description": "URL does not contain the specified string.",
"required": false
},
{
"name": "url_not_start_with",
"type": "string",
"description": "URL does not start with the specified string.",
"required": false
},
{
"name": "url_start_with",
"type": "string",
"description": "URL starts with the specified string.",
"required": false
},
{
"name": "url_not_match",
"type": "string",
"description": "URL does not match the specified string. ",
"required": false
},
{
"name": "delivery_type",
"type": "enum",
"description": "Distinguishes secure from non-secure traffic. Optional. No selection returns both secure and non-secure traffic.",
"values": [
{
"value": "secure",
"description": "Secure traffic."
},
{
"value": "non_secure",
"description": "Non-secure traffic."
}
],
"required": false
}
],
"intervals": [
"MONTH",
"WEEK",
"DAY"
],
"dataRetentionDays": 92,
"limit": 500,
"maxLimit": 25000,
"links": [
{
"rel": "self",
"href": "/reporting-api/v1/reports/urlerrorresponses-by-url/versions/1"
},
{
"rel": "versions",
"href": "/reporting-api/v1/reports/urlerrorresponses-by-url/versions"
},
{
"rel": "all-reports",
"href": "/reporting-api/v1/reports"
},
{
"rel": "execute-report",
"href": "/reporting-api/v1/reports/urlerrorresponses-by-url/versions/1/report-data"
}
]
}