AWS Reports APIs
CCKM provides options to generate key visibility reports based on:
Key-related activities between CCKM and AWS KMS
Track keys by their expiration dates
What applications are using the keys
AWS reports are categorized as:
Key Activity Report: Inspect individual AWS key histories by operations, for example, when they were refreshed, rotated, edited, or deleted. Also, use this report to compare key activities between CCKM and AWS KMS.
Key Aging Report: Track keys by their expiration dates. Audit a range of dates, from past material deletions to future scheduled deletions, within the selected AWS KMS account.
Service/Usage Report: Monitor key usage by tracking services and applications consuming the keys. View when and where a service requests the use of each key.
Use the AWS reports APIs to:
Generate a report
View the list of existing reports
View details of a particular report
Delete a report from CCKM
View the content of a generated report
Download the content of a report in CSV
Generating a Report
Use the post /v1/cckm/aws/reports
API to generate a report. This API starts the report generation. The content of the report can be verified by running the get /v1/cckm/aws/reports/{id}/contents
API. Refer to Viewing Content of Generated Reports.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports' -H 'Authorization: Bearer AUTHTOKEN' -H 'Content-Type: application/json' --data-binary $'{\n "name": "<report name>",\n "start_time": "<start time>",\n "end_time": "<end time>",\n "report_type": "<report type>",\n "cloud_watch_params": [<cloud parameters>]\n}' --compressed
Request Parameters
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
cloud_watch_params | array of JSONs | Cloud watch parameters. Refer to Cloud Watch Parameters for details. |
name | string | Name for the report. |
end_time | string | End time for the report. Default end time is the time when the call is initiated. |
report_type | string | Type of the report. Possible types are: • service-report • key-report • key-aging The default type is key-report . |
start_time | string | Start time from when the report is to be generated. Default start time is end_time-24hrs. |
Note
If end_time
and start_time
are not specified, a report for the last 24 hours is generated.
Cloud Watch Parameters
Parameter | Type | Description |
---|---|---|
kms | string | Name or ID of the KMS. |
log_group_name | string | Name of the log group. This parameter is optional for key-aging reports. Refer to Fetching List of Log Groups from AWS for instructions to determine the log group. |
log_group_region | string | Name of the region. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjAxZDM2ZTY3LTI5NWQtNDNjZC05NDExLTk0OTdkYjQzMzQ4MyIsImlhdCI6MTU5NjAxMzM0OCwiZXhwIjoxNTk2MDEzNjQ4fQ.7jbUbvoZr9dZ8Yf1NmDUTw3jhq-XDzSHJzN-vQeYcbo' -H 'Content-Type: application/json' --data-binary $'{\n "name": "report-1",\n"start_time": "2020-08-06T08:20:48Z",\n"end_time": "2020-08-06T10:20:48Z",\n "report_type": "key-report",\n "cloud_watch_params": [{"kms":"aws",\n "log_group_name": "log-group-name",\n "log_group_region":"us-east-1"\n}]\n}' --compressed
Example Response
{
"id": "60fd7cb5-5bcf-41ef-afe2-3140d4bf2f1b",
"uri": "kylo:kylo:cckm:reports:report-1",
"account": "kylo:kylo:admin:accounts:kylo",
"application": "ncryptify:gemalto:admin:apps:kylo",
"devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
"createdAt": "2020-12-21T05:29:22.344801378Z",
"name": "report-1",
"updatedAt": "2020-12-21T05:29:22.36707976Z",
"overall_status": "in_progress",
"abort": false,
"kms": [
"aws"
],
"log_groups": [
"log-group-name"
],
"regions": [
"us-east-1"
],
"report_type": "key-report",
"start_time": "2020-08-06T08:20:48Z",
"end_time": "2020-08-06T10:20:48Z"
}
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.
Viewing List of Existing Reports
Use the get /v1/cckm/aws/reports
API to view the list of updated reports. The results can be filtered using the query parameters.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer AUTHTOKEN' --compressed
Request Parameter
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
Request Query Parameters
Parameter | Type | Description |
---|---|---|
id | string | Internal ID of the report. |
overall_status | string | Overall status of the report. The status can be: • completed • in progress • failed |
name | string | Name of the report. |
report_type | string | Type of the report. Possible types are: • service-report • key-report • key-aging |
skip | integer | Number of records to skip. For example, if "skip":5 is specified, the first five records will not be displayed in the output. |
limit | integer | Numbers of records to display. For example, if "limit":10 is specified, then the next 10 records (after skipping the number of records specified in the skip parameter) will be displayed in the output. |
sort | string | Comma-delimited list of properties to sort the results. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjAxZDM2ZTY3LTI5NWQtNDNjZC05NDExLTk0OTdkYjQzMzQ4MyIsImlhdCI6MTU5NjAxMzM0OCwiZXhwIjoxNTk2MDEzNjQ4fQ.7jbUbvoZr9dZ8Yf1NmDUTw3jhq-XDzSHJzN-vQeYcbo' --compressed
Example Response
{
"skip": 0,
"limit": 10,
"total": 1,
"resources": [
{
"id": "60fd7cb5-5bcf-41ef-afe2-3140d4bf2f1b",
"uri": "kylo:kylo:cckm:reports:report-1",
"account": "kylo:kylo:admin:accounts:kylo",
"application": "ncryptify:gemalto:admin:apps:kylo",
"devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
"createdAt": "2020-12-21T05:29:22.344801Z",
"name": "report-1",
"updatedAt": "2020-12-21T05:29:24.509046Z",
"completed_at": "2020-12-21T05:29:24.508879Z",
"overall_status": "completed",
"detailed_status": {
"aws/log-group-name": "completed"
},
"abort": false,
"kms": [
"aws"
],
"log_groups": [
"log-group-name"
],
"regions": [
"us-east-1"
],
"report_type": "key-report",
"start_time": "2020-08-06T08:20:48Z",
"end_time": "2020-08-06T10:20:48Z"
}
]
}
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.
Viewing Details of a Particular Report
Use the get /v1/cckm/aws/reports/{id}
API to view the details of a report.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports/{id}' -H 'Authorization: Bearer AUTHTOKEN' --compressed
Here, {id}
represents the report ID.
Request Parameter
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports/45bb86e6-5cdb-4aea-87cd-0b5cca38e38e' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6ImJmZjI5NDEyLWNmMzMtNDkyMS1hYzEzLWZmM2IzZGIyZWQ1YyIsImlhdCI6MTU5NjAxMzY2MiwiZXhwIjoxNTk2MDEzOTYyfQ.pQ8y9tMSTrBGZ-RYfWAHh6JTFp7GJXMDL10UFGScJQU' --compressed
Example Response
{
"id": "60fd7cb5-5bcf-41ef-afe2-3140d4bf2f1b",
"uri": "kylo:kylo:cckm:reports:report-1",
"account": "kylo:kylo:admin:accounts:kylo",
"application": "ncryptify:gemalto:admin:apps:kylo",
"devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
"createdAt": "2020-12-21T05:29:22.344801Z",
"name": "report-1",
"updatedAt": "2020-12-21T05:29:24.509046Z",
"completed_at": "2020-12-21T05:29:24.508879Z",
"overall_status": "completed",
"detailed_status": {
"aws/log-group-name": "completed"
},
"abort": false,
"kms": [
"aws"
],
"log_groups": [
"log-group-name"
],
"regions": [
"us-east-1"
],
"report_type": "key-report",
"start_time": "2020-08-06T08:20:48Z",
"end_time": "2020-08-06T10:20:48Z"
}
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.
Deleting a Report from CCKM
Use the delete /v1/cckm/aws/reports/{id}
API to delete a report from CCKM.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports/{id}' -X DELETE -H 'Authorization: Bearer AUTHTOKEN' --compressed
Here, {id}
represents the report ID.
Request Parameter
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports/45bb86e6-5cdb-4aea-87cd-0b5cca38e38e' -X DELETE -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6ImJmZjI5NDEyLWNmMzMtNDkyMS1hYzEzLWZmM2IzZGIyZWQ1YyIsImlhdCI6MTU5NjAxMzY2MiwiZXhwIjoxNTk2MDEzOTYyfQ.pQ8y9tMSTrBGZ-RYfWAHh6JTFp7GJXMDL10UFGScJQU' --compressed
Example Response
{
"status": 204
}
Viewing Content of Generated Reports
Use the get /v1/cckm/aws/reports/{id}/contents
API to view the content of a report on console. Use the request query parameters to filter the content of the report.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports/{id}/contents/contents?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer AUTHTOKEN' --compressed
Here, {id}
represents the report ID.
Request Parameter
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
Request Query Parameters
Parameter | Type | Description |
---|---|---|
key_arn | string | Amazon Resource Name (ARN) of the key. |
region | string | AWS region. |
aws_account_id | string | ID of the AWS account. |
cloud_name | string | Name of the AWS cloud. |
skip | integer | Number of records to skip. For example, if "skip":5 is specified, the first five records will not be displayed in the output. |
limit | integer | Numbers of records to display. For example, if "limit":10 is specified, then the next 10 records (after skipping the number of records specified in the skip parameter) will be displayed in the output. |
sort | string | Comma-delimited list of properties to sort the results. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports/60fd7cb5-5bcf-41ef-afe2-3140d4bf2f1b/contents?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6ImJmZjI5NDEyLWNmMzMtNDkyMS1hYzEzLWZmM2IzZGIyZWQ1YyIsImlhdCI6MTU5NjAxMzY2MiwiZXhwIjoxNTk2MDEzOTYyfQ.pQ8y9tMSTrBGZ-RYfWAHh6JTFp7GJXMDL10UFGScJQU' --compressed
Example Response
{
"skip": 0,
"limit": 1,
"total": 10030,
"resources": [
{
"id": "b8a978f5-f306-4e9d-9003-6729c91415b3",
"uri": "kylo:kylo:cckm:aws-reports:b8a978f5-f306-4e9d-9003-6729c91415b3",
"account": "kylo:kylo:admin:accounts:kylo",
"application": "ncryptify:gemalto:admin:apps:kylo",
"devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
"createdAt": "2020-12-21T05:33:14.193844Z",
"updatedAt": "2020-12-21T05:33:13.43824Z",
"key_arn": "arn:aws:kms:eu-central-1:123456789012:key/faa8a9b8-159c-408c-bb4b-8d05df7b8bdb",
"cloud_user_name": "unknown",
"event_name": "GetKeyPolicy",
"event_time": "2020-12-20T11:50:12Z",
"origin": "AWS_KMS",
"region": "eu-central-1",
"kms": "aws",
"aws_account_id": "123456789012",
"cloud_name": "aws"
}
]
}
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.
Downloading Content of Reports in CSV
Use the get /v1/cckm/aws/reports/{id}/download
API to view the comma-separated report. If needed, you can copy this report and create a CSV file.
Syntax
curl -k '<IP>/api/v1/cckm/aws/reports/{id}/download' -H 'Authorization: Bearer AUTHTOKEN' --compressed
Here, {id}
represents the report ID.
Request Parameter
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/reports/60fd7cb5-5bcf-41ef-afe2-3140d4bf2f1b/download' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6ImJmZjI5NDEyLWNmMzMtNDkyMS1hYzEzLWZmM2IzZGIyZWQ1YyIsImlhdCI6MTU5NjAxMzY2MiwiZXhwIjoxNTk2MDEzOTYyfQ.pQ8y9tMSTrBGZ-RYfWAHh6JTFp7GJXMDL10UFGScJQU' --compressed
Example Response
"Key ARN,Cloud User Name,Event Name,Event Time,Region,Kms,Account ID"
arn:aws:kms:us-east-1:123456789012:key/7b64b5f7-5861-41dc-a292-66f8aff00e4e,unknown,ListResourceTags,2020-12-20T22:18:30Z,us-east-1,aws,123456789012
The output shows the comma-separated report. If needed, you can copy this report and create a CSV file.
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.
Fetching List of Log Groups from AWS
Use the post /v1/cckm/aws/get-log-groups
API to fetch the list of log groups available on AWS.
Syntax
curl -k '<IP>/api/v1/cckm/aws/get-log-groups' -H 'Authorization: Bearer AUTHTOKEN' -H 'Content-Type: application/json' --data-binary $'{\n "kms": "aws",\n "region": "",\n "cloud_watch_params": {\n "limit": \n }\n}' --compressed
Request Parameters
Parameter | Type | Description |
---|---|---|
AUTHTOKEN | string | Authorization token. |
kms | string | Name or ID of the KMS. |
region | string | AWS region. |
cloud_watch_params | array of JSONs | Cloud watch parameters. Refer to Cloud Watch Parameters for details. |
Cloud Watch Parameters
Parameter | Type | Description |
---|---|---|
limit | integer | Number of the items in the view. The default limit is 50 . |
logGroupNamePrefix | string | Prefix to match the log group name. |
nextToken | string | Token for the next set of items to return. This token is received from a previous call. |
Example Request
curl -k 'https://127.0.0.1/api/v1/cckm/aws/get-log-groups' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiI5ZDJiYmYxNC0zMDg1LTQ5YjAtYTY4MC1hMDQ5ODgyYjIwNDQiLCJzdWIiOiJsb2NhbHxhNDk0MmY1OS1mMGUxLTQ1ZWQtYWUxNS1kZGM3YWZhZDA4NzYiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiNWU3MDBjY2UtMTRmYS00ZTVjLWI0YjMtNWQ4ZmE3ODgxYmI3Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6ImJmZjI5NDEyLWNmMzMtNDkyMS1hYzEzLWZmM2IzZGIyZWQ1YyIsImlhdCI6MTU5NjAxMzY2MiwiZXhwIjoxNTk2MDEzOTYyfQ.pQ8y9tMSTrBGZ-RYfWAHh6JTFp7GJXMDL10UFGScJQU' -H 'Content-Type: application/json' --data-binary $'{\n "kms": "aws",\n "region": "us-east-1",\n "cloud_watch_params": {\n "limit": 1\n }\n}' --compressed
Example Response
{
"LogGroups": [
{
"Arn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/cloudhsm/cluster-d5v3afg4pk2:*",
"CreationTime": 1534942775555,
"KmsKeyId": null,
"LogGroupName": "/aws/cloudhsm/cluster-d5v3afg4pk2",
"MetricFilterCount": 0,
"RetentionInDays": null,
"StoredBytes": 25768395
}
],
"NextToken": "/aws/cloudhsm/cluster-d5v3afg4pk2"
}
Response Codes
Response Code | Description |
---|---|
2xx | Success |
4xx | Client errors |
5xx | Server errors |
Refer to HTTP status codes for details.