Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
version: Latest
title: Cumulocity Audits API
x-logo:
url: https://www.cumulocity.com/docs/images/logo-platform.svg
backgroundColor: '#F8F8F8'
altText: Cumulocity
href: https://www.cumulocity.com/api
description: '# REST implementation
This section describes the aspects common to all REST-based interfaces of Cumulocity. The interfaces are based on the Hypertext Transfer Protocol 1.1 using HTTPS. ## HTTP usage
### Application management
Cumulocity uses a so-called "application key" to distinguish requests coming from devices and traffic from applications. If you write an application, pass the following header as part of all requests:
```markup
X-Cumulocity-Application-Key:
```
For example, if you registered your application in the Cumulocity Administration application with the key "myapp", your requests should contain the header:
```markup
X-Cumulocity-Application-Key: myapp
```
This makes your application subscribable and billable. If you implement a device, do not pass the key. > **ⓘ Info:** Make sure that you pass the key in **all** requests coming from an application. If you leave out the key,
> the request will be considered as a device request, and the corresponding device will be marked as "available". ### Limited HTTP clients
If you use an HTTP client that can only perform GET and POST methods in HTTP, you can emulate the other methods through an additional "X-HTTP-METHOD" header. Simply issue a POST request and add the header, specifying the actual REST method to be executed. For example, to emulate the "PUT" (modify) method, you can use:
```http
POST ... X-HTTP-METHOD: PUT
```
### Processing mode
Every update request (PUT, POST, DELETE) executes with a so-called *processing mode*. The processing modes are as follows:
|Processing mode|Description|
|---|---|
|PERSISTENT (default)|Stores data in the Cumulocity database and sends data to the Streaming Analytics engine. Afterwards, Cumulocity returns the result of the request. This is the default mode.|
|TRANSIENT|Sends data to the Streaming Analytics engine and immediately returns the results asynchronously but does not store data in Cumulocity’s database. This mode saves storage and processing costs and is useful for example when tracking devices in real time without requiring data to be stored.|
|QUIESCENT|Behaves similar to the persistent mode with the exception that no real-time notifications will be sent.|
|CEP|Behaves like the transient mode with the exception that no real-time notifications are sent.|
To explicitly control the processing mode of an update request, you can use the "X-Cumulocity-Processing-Mode" header with a value of either "PERSISTENT", "TRANSIENT", "QUIESCENT" or "CEP":
```markup
X-Cumulocity-Processing-Mode: PERSISTENT
```
> **ⓘ Info:** Events are always delivered to CEP/Apama for all processing modes. This is independent from real-time notifications. ### Authorization
All requests issued to Cumulocity are subject to authorization. To determine the required permissions, see the "Required role" entries for the individual requests. To learn more about the different permissions and the concept of ownership in Cumulocity, see Getting started > Technical concepts > Security aspects > Access control > Managing roles and assigning permissions in the Cumulocity user documentation. > **⚠️ Important:** In the Cumulocity API, each granular permission is identified by a unique “permission” string, which is prefixed with ROLE_ (for example, ROLE_ALARM_READ, ROLE_INVENTORY_ADMIN). Therefore, permissions are frequently referred to as “roles” throughout the API as well as in the configuration files. For example, the microservice manifest includes a requiredRoles field, which actually expects a permission string. See also the Glossary of the Cumulocity user documentation for the usage of the terms “permission” and “role” in the Cumulocity context. ### Media types
Each type of data is associated with an own media type. The general format of media types is:
```markup
application/vnd.com.nsn.cumulocity.+json;ver=;charset=UTF-8
```
Each media type contains a parameter `ver` indicating the version of the type.'
servers:
- description: Cumulocity tenant
url: https://<TENANT_DOMAIN>
security:
- Basic: []
- OAI-Secure: []
- SSO: []
- JWT-IAM: []
tags:
- name: Audits
description: 'An audit log stores events that are security-relevant and should be stored for auditing. For example, an audit log should be generated when a user logs into a gateway.
An audit log extends an event through:
* A username of the user that carried out the activity.
* An application that was used to carry out the activity.
* The actual activity.
* A severity.
> **ⓘ Info:** The Accept header should be provided in all POST requests, otherwise an empty response body will be returned.'
paths:
/audit/auditRecords:
post:
operationId: postAuditRecordCollectionResource
x-codegen-resource-name: createAuditRecord
parameters:
- $ref: '#/components/parameters/acceptHeader'
tags:
- Audits
security:
- Basic: []
- OAI-Secure: []
- SSO: []
- JWT-IAM: []
summary: Create an audit record
description: 'Create an audit record.
Required roles
ROLE_AUDIT_ADMIN OR ROLE_SYSTEM OR AUDIT_ADMIN permission on the resource'
requestBody:
required: true
content:
application/vnd.com.nsn.cumulocity.auditrecord+json:
example:
activity: Operation created
source:
id: '251982'
text: 'Operation created: status=''PENDING'''
time: '2020-03-19T12:03:27.845Z'
type: Operation
user: rina
schema:
$ref: '#/components/schemas/auditRecord'
x-code-samples:
- lang: cURL
source: 'curl --location --request POST "https://<TENANT_DOMAIN>/audit/auditRecords" \
--header "Authorization: Basic <AUTHORIZATION>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data-raw ''<Payload>''
'
- lang: C#
source: 'var client = new RestClient("https://<TENANT_DOMAIN>/audit/auditRecords");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic <AUTHORIZATION>");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddParameter("application/json", "<Payload>", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
'
- lang: Java
source: "Unirest.setTimeouts(0, 0);\nHttpResponse<String> response = Unirest.post(\"https://<TENANT_DOMAIN>/audit/auditRecords\")\n .header(\"Authorization\", \"Basic <AUTHORIZATION>\")\n .header(\"Content-Type\", \"application/json\")\n .header(\"Accept\", \"application/json\")\n .body(\"<Payload>\")\n .asString();\nSystem.out.println(response);\n"
- lang: Node.js
source: "var unirest = require(\"unirest\");\nvar req = unirest(\"POST\", \"https://<TENANT_DOMAIN>/audit/auditRecords\")\n .headers({\n \"Authorization\": \"Basic <AUTHORIZATION>\",\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n })\n .send(JSON.stringify( <Payload> ))\n .end(function (res) {\n if (res.error) throw new Error(res.error);\n console.log(res.raw_body);\n });\n"
- lang: Python
source: "import requests\nimport json\n\nurl = \"https://<TENANT_DOMAIN>/audit/auditRecords\"\nheaders = {\n \"Authorization\": \"Basic <AUTHORIZATION>\",\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n}\nresponse = requests.request(\"POST\", url, headers=headers, data = json.dumps(<Payload>))\nprint(response.text.encode(\"utf8\"))\n"
responses:
'201':
description: An audit record was created.
content:
application/vnd.com.nsn.cumulocity.auditrecord+json:
schema:
$ref: '#/components/schemas/auditRecord'
'401':
$ref: '#/components/responses/unauthorizedError'
'403':
$ref: '#/components/responses/operationNotAuthorized'
get:
operationId: getAuditRecordCollectionResource
x-codegen-resource-name: getAuditRecords
parameters:
- $ref: '#/components/parameters/queryParam_audit_application'
- $ref: '#/components/parameters/queryParam_currentPage'
- $ref: '#/components/parameters/queryParam_audit_dateFrom'
- $ref: '#/components/parameters/queryParam_audit_dateTo'
- $ref: '#/components/parameters/queryParam_pageSize'
- $ref: '#/components/parameters/queryParam_audit_source'
- $ref: '#/components/parameters/queryParam_audit_type'
- $ref: '#/components/parameters/queryParam_audit_user'
- $ref: '#/components/parameters/queryParam_withTotalElements'
- $ref: '#/components/parameters/queryParam_withTotalPages'
tags:
- Audits
security:
- Basic: []
- OAI-Secure: []
- SSO: []
summary: Retrieve all audit records
description: Retrieve all audit records registered on your tenant, or a specific subset based on queries.
x-code-samples:
- lang: cURL
source: 'curl --location --request GET "https://<TENANT_DOMAIN>/audit/auditRecords" \
--header "Authorization: Basic <AUTHORIZATION>"
'
- lang: C#
source: 'var client = new RestClient("https://<TENANT_DOMAIN>/audit/auditRecords");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic <AUTHORIZATION>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
'
- lang: Java
source: "Unirest.setTimeouts(0, 0);\nHttpResponse<String> response = Unirest.get(\"https://<TENANT_DOMAIN>/audit/auditRecords\")\n .header(\"Authorization\", \"Basic <AUTHORIZATION>\").asString();\nSystem.out.println(response);\n"
- lang: Node.js
source: "var unirest = require(\"unirest\");\nvar req = unirest(\"GET\", \"https://<TENANT_DOMAIN>/audit/auditRecords\")\n .headers({\n \"Authorization\": \"Basic <AUTHORIZATION>\"\n })\n .end(function (res) {\n if (res.error) throw new Error(res.error);\n console.log(res.raw_body);\n });\n"
- lang: Python
source: "import requests\n\nurl = \"https://<TENANT_DOMAIN>/audit/auditRecords\"\nheaders = {\n \"Authorization\": \"Basic <AUTHORIZATION>\"\n}\nresponse = requests.request(\"GET\", url, headers=headers)\nprint(response.text.encode(\"utf8\"))\n"
responses:
'200':
$ref: '#/components/responses/auditRecordCollectionFound'
'401':
$ref: '#/components/responses/unauthorizedError'
'403':
$ref: '#/components/responses/operationNotAuthorized'
/audit/auditRecords/{id}:
parameters:
- $ref: '#/components/parameters/auditId'
get:
operationId: getAuditRecordResource
x-codegen-resource-name: getAuditRecord
tags:
- Audits
security:
- Basic: []
- OAI-Secure: []
- SSO: []
summary: Retrieve a specific audit record
description: 'Retrieve a specific audit record by a given ID.
Required roles
ROLE_AUDIT_READ OR AUDIT_READ permission on the source'
x-code-samples:
- lang: cURL
source: 'curl --location --request GET "https://<TENANT_DOMAIN>/audit/auditRecords/{id}" \
--header "Authorization: Basic <AUTHORIZATION>"
'
- lang: C#
source: 'var client = new RestClient("https://<TENANT_DOMAIN>/audit/auditRecords/{id}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic <AUTHORIZATION>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
'
- lang: Java
source: "Unirest.setTimeouts(0, 0);\nHttpResponse<String> response = Unirest.get(\"https://<TENANT_DOMAIN>/audit/auditRecords/{id}\")\n .header(\"Authorization\", \"Basic <AUTHORIZATION>\").asString();\nSystem.out.println(response);\n"
- lang: Node.js
source: "var unirest = require(\"unirest\");\nvar req = unirest(\"GET\", \"https://<TENANT_DOMAIN>/audit/auditRecords/{id}\")\n .headers({\n \"Authorization\": \"Basic <AUTHORIZATION>\"\n })\n .end(function (res) {\n if (res.error) throw new Error(res.error);\n console.log(res.raw_body);\n });\n"
- lang: Python
source: "import requests\n\nurl = \"https://<TENANT_DOMAIN>/audit/auditRecords/{id}\"\nheaders = {\n \"Authorization\": \"Basic <AUTHORIZATION>\"\n}\nresponse = requests.request(\"GET\", url, headers=headers)\nprint(response.text.encode(\"utf8\"))\n"
responses:
'200':
$ref: '#/components/responses/auditFound'
'401':
$ref: '#/components/responses/unauthorizedError'
'403':
$ref: '#/components/responses/operationNotAuthorized'
components:
parameters:
queryParam_audit_user:
name: user
in: query
description: The username to search for.
schema:
type: string
minLength: 1
example: rina
queryParam_audit_type:
name: type
in: query
description: The type of audit record to search for.
schema:
type: string
minLength: 1
example: Operation
queryParam_withTotalElements:
name: withTotalElements
in: query
description: 'When set to `true`, the returned result will contain in the statistics object the total number of elements. Only applicable on [range queries](https://en.wikipedia.org/wiki/Range_query_(database)).
> **ⓘ Info:** To improve performance, the `totalElements` statistics are cached for 10 seconds.
'
schema:
type: boolean
default: false
example: true
queryParam_audit_dateTo:
name: dateTo
in: query
description: End date or date and time of the audit record (device time).
schema:
type: string
format: date-time
minLength: 10
example: '2020-03-30'
queryParam_audit_dateFrom:
name: dateFrom
in: query
description: Start date or date and time of the audit record (device time).
schema:
type: string
format: date-time
minLength: 10
example: '2020-03-01'
queryParam_audit_application:
name: application
in: query
description: Name of the application from which the audit was carried out.
schema:
type: string
minLength: 1
example: cockpit
queryParam_withTotalPages:
name: withTotalPages
in: query
description: 'When set to `true`, the returned result will contain in the statistics object the total number of pages. Only applicable on [range queries](https://en.wikipedia.org/wiki/Range_query_(database)).
> **ⓘ Info:** To improve performance, the `totalPages` statistics are cached for 10 seconds.
'
schema:
type: boolean
default: false
example: true
queryParam_currentPage:
name: currentPage
in: query
description: The current page of the paginated results.
schema:
type: integer
minimum: 1
default: 1
example: 3
queryParam_pageSize:
name: pageSize
in: query
description: Indicates how many entries of the collection shall be returned. The upper limit for one page is 2,000 objects.
schema:
type: integer
minimum: 1
maximum: 2000
default: 5
example: 10
auditId:
name: id
in: path
description: Unique identifier of the audit record.
required: true
schema:
type: string
minLength: 1
example: '100423189'
acceptHeader:
name: Accept
in: header
description: Advertises which content types, expressed as MIME types, the client is able to understand.
required: false
schema:
type: string
minLength: 1
example: application/json
queryParam_audit_source:
name: source
in: query
description: The platform component ID to which the audit is associated.
schema:
type: string
minLength: 1
example: '251994'
schemas:
desc_self:
title: SelfURL
description: A URL linking to this resource.
type: string
format: uri
readOnly: true
AuditRecordCollection:
type: object
properties:
prev:
$ref: '#/components/schemas/desc_prevPage'
self:
$ref: '#/components/schemas/desc_self'
next:
$ref: '#/components/schemas/desc_nextPage'
statistics:
$ref: '#/components/schemas/pageStatistics'
auditRecords:
description: An array containing the results of the request.
type: array
items:
$ref: '#/components/schemas/auditRecord'
example:
prev: https://<TENANT_DOMAIN>/audit/auditRecords?pageSize=1¤tPage=1
self: https://<TENANT_DOMAIN>/audit/auditRecords?pageSize=1¤tPage=2
next: https://<TENANT_DOMAIN>/audit/auditRecords?pageSize=1¤tPage=3
auditRecords:
- activity: Operation created
creationTime: '2020-03-19T12:16:31.586Z'
id: '20200301'
self: https://<TENANT_DOMAIN>/audit/auditRecords/20200301
source:
id: '251982'
self: https://<TENANT_DOMAIN>/inventory/managedObjects/251982
text: 'Operation created: status=''PENDING'''
time: '2020-03-19T00:00:00.000Z'
type: Operation
user: rina
statistics:
currentPage: 2
pageSize: 1
totalPages: 3
desc_nextPage:
title: NextPageURL
description: A URI reference [[RFC3986](https://tools.ietf.org/html/rfc3986)] to a potential next page of managed objects.
type: string
readOnly: true
error:
type: object
properties:
error:
description: The type of error returned.
type: string
message:
description: A human-readable message providing more details about the error.
type: string
info:
description: A URI reference [[RFC3986](https://tools.ietf.org/html/rfc3986)] that identifies the error code reported.
type: string
pageStatistics:
description: Information about paging statistics.
type: object
readOnly: true
properties:
currentPage:
description: The current page of the paginated results.
type: integer
minimum: 1
example: 2
pageSize:
description: Indicates the number of objects that the collection may contain per page. The upper limit for one page is 2,000 objects.
type: integer
minimum: 1
maximum: 2000
example: 5
totalElements:
description: The total number of results (elements).
type: integer
minimum: 0
example: 12
totalPages:
description: 'The total number of paginated results (pages).
> **ⓘ Info:** This property is returned by default except when an operation retrieves all records where values are between an upper and lower boundary, for example, querying ranges using `dateFrom`–`dateTo`. In such cases, the query parameter `withTotalPages=true` should be used to include the total number of pages (at the expense of slightly slower performance).
'
type: integer
minimum: 0
example: 3
desc_objectId:
title: ObjectId
description: Unique identifier of the object.
type: string
minLength: 1
desc_prevPage:
title: PreviousPageURL
description: A URI reference [[RFC3986](https://tools.ietf.org/html/rfc3986)] to a potential previous page of managed objects.
type: string
readOnly: true
auditRecord:
type: object
required:
- activity
- source
- text
- time
- type
properties:
activity:
description: Summary of the action that was carried out.
type: string
application:
description: Name of the application that performed the action.
type: string
readOnly: true
c8y_Metadata:
description: Metadata of the audit record.
type: object
properties:
action:
description: The action that was carried out.
type: string
enum:
- SUBSCRIBE
- DEPLOY
- SCALE
- DELETE
readOnly: true
changes:
description: Collection of objects describing the changes that were carried out.
type: array
items:
type: object
properties:
attribute:
description: The attribute that was changed.
type: string
changeType:
description: The type of change that was carried out.
type: string
enum:
- ADDED
- REPLACED
newValue:
description: The new value of the object.
oneOf:
- type: string
- type: object
properties:
cpu:
description: Number of CPUs or CPU time limit.
type: string
memory:
description: Memory usage limit.
type: string
previousValue:
description: The previous value of the object.
oneOf:
- type: string
- type: object
properties:
cpu:
description: Number of CPUs or CPU time limit.
type: string
memory:
description: Memory usage limit.
type: string
type:
description: The type of the object.
type:
- string
- 'null'
readOnly: true
creationTime:
description: The date and time when the audit record was created.
type: string
format: date-time
readOnly: true
id:
description: Unique identifier of the audit record.
type: string
readOnly: true
self:
$ref: '#/components/schemas/desc_self'
severity:
description: The severity of the audit action.
type: string
readOnly: true
enum:
- CRITICAL
- MAJOR
- MINOR
- WARNING
- INFORMATION
source:
description: The platform component ID to which the audit is associated.
type: object
required:
- id
properties:
id:
$ref: '#/components/schemas/desc_objectId'
self:
$ref: '#/components/schemas/desc_self'
text:
description: Details of the action that was carried out.
type: string
time:
description: The date and time when the audit is updated.
type: string
format: date-time
type:
description: Identifies the platform component of the audit.
type: string
enum:
- Alarm
- Application
- BulkOperation
- CepModule
- Connector
- Event
- Group
- Inventory
- InventoryRole
- Operation
- Option
- Report
- SingleSignOn
- SmartRule
- SYSTEM
- Tenant
- TenantAuthConfig
- TrustedCertificates
- User
- UserAuthentication
user:
description: The user who carried out the activity.
type: string
additionalProperties:
description: 'It is possible to add an arbitrary number of additional properties as a list of key-value pairs, for example, `"property1": {}`, `"property2": "value"`. These properties can be of any type, for example, object or string.
'
x-additionalPropertiesName: customProperties
example:
activity: Operation created
creationTime: '2020-03-19T12:16:31.586Z'
id: '20200301'
self: https://<TENANT_DOMAIN>/audit/auditRecords/20200301
source:
id: '251982'
self: https://<TENANT_DOMAIN>/inventory/managedObjects/251982
text: 'Operation created: status=''PENDING'''
time: '2020-03-19T00:00:00.000Z'
type: Operation
user: rina
responses:
auditRecordCollectionFound:
description: The request has succeeded and all audit records are sent in the response.
content:
application/vnd.com.nsn.cumulocity.auditrecordcollection+json:
schema:
$ref: '#/components/schemas/AuditRecordCollection'
unauthorizedError:
description: Authentication information is missing or invalid.
content:
application/vnd.com.nsn.cumulocity.error+json:
schema:
$ref: '#/components/schemas/error'
example:
error: security/Unauthorized
message: 'Invalid credentials! : Bad credentials'
info: https://www.cumulocity.com/guides/reference-guide/#error_reporting
operationNotAuthorized:
description: Not authorized to perform this operation.
auditFound:
description: The request has succeeded and the audit record is sent in the response.
content:
application/vnd.com.nsn.cumulocity.auditrecord+json:
schema:
$ref: '#/components/schemas/auditRecord'
securitySchemes:
Basic:
type: http
scheme: basic
description: 'The authorization header is formed as `Basic <Base64(<tenantID>/<c8yuser>:<password>)>`. For instance, if your tenantID, username and password are **t0071234**, **testuser** and **secret123** respectively, you can generate the Base64 string with the following command:
```shell
$ echo -n t0071234/testuser:secret123 | base64
```
and your authorization header would look like this:
```
"Authorization": "Basic dDAwNzEyMzQvdGVzdHVzZXI6c2VjcmV0MTIz"
```
'
OAI-Secure:
type: http
scheme: bearer
description: 'This is the recommended authorization method because it provides high security using authorization tokens to prove the identity of the user, and it is the default login mode on creating new tenants. This mode is an enhancement of the previous OAuth Internal authentication (available prior to 10.13.0).
For more details about OAI-Secure authentication, see [Platform administration > Authentication > Basic settings > Login settings](https://www.cumulocity.com/docs/authentication/basic-settings/#login-settings) in the Cumulocity user documentation.
'
SSO:
type: oauth2
description: "The login with SSO requires a correct configuration on the [Cumulocity side](https://www.cumulocity.com/docs/authentication/sso/). With the configuration, an additional button is available on the Login page. After clicking the button, the user is redirected to authenticate with the configured authorization server. On successful login, the user is redirected to Cumulocity.\n\nAuthentication details are exchanged using cookies. There are two parts to it, the first is the authentication cookie that is handled automatically by the Cumulocity platform. The second is the XSRF-TOKEN cookie. When a client receives the cookie, it should take the value and put it in the X-XSRF-TOKEN request header in all subsequent requests.\n\nThe flow of authenticating with authentication code grant is as follows:\n\n\n\nThe first request executed by the browser is:\n\n```http\nGET /tenant/loginOptions\nHost: https://<TENANT_DOMAIN>\nAccept: application/vnd.com.nsn.cumulocity.loginoptioncollection+json\n```\n\nResponse sample:\n\n```json\n{\n \"loginOptions\": [\n {\n \"buttonName\": \"Login with oauth\",\n \"grantType\": \"<AUTHORIZATION_CODE>\",\n \"initRequest\": \"https://<TENANT_DOMAIN>/tenant/oauth?response_type=code&tenant_id=<TENANT_ID>\",\n \"self\": \"https://<TENANT_DOMAIN>/tenant/loginOptions/oauth2\",\n \"type\": \"oauth2\"\n },\n ...\n ],\n \"self\": \"http://<TENANT_DOMAIN>/tenant/loginOptions/\"\n}\n```\n\nThe browser must invoke the request provided in the initRequest parameter.\n\nThe initRequest initiates the redirect, in which the user is prompted for credentials. After successful login, the user is redirected back to the browser, where it must capture the code request parameter. Then the request to exchange the code for the token is as follows:\n\n```http\nPOST /tenant/oauth?grant_type=authorization_code&code=<CODE>\nHost: https://<TENANT_DOMAIN>\n```\n\nA successful response will have no body but the following response headers:\n\n```\nSet-Cookie: authorization=<TOKEN>;\nSet-Cookie: XSRF-TOKEN=<XSRF-TOKEN>;\n```\n\nThe authorization cookie is valid for two weeks.\n"
flows:
clientCredentials:
tokenUrl: /tenant/oauth?grant_type=authorization_code&code=<CODE>
scopes: {}
JWT-IAM:
type: http
scheme: bearer
bearerFormat: JWT
description: 'This kind of authentication substitutes the JWT authentication with OAuth2 access tokens from your Identity and Access Management (IAM).
You can enable this in the [SSO configuration](https://www.cumulocity.com/docs/authentication/sso/).
The HTTP header must include:
```
"Authorization": "Bearer <Access token>"
```
When a request with a bearer token in the header is received, Cumulocity checks if the access token is from your IAM (that is, if authentication is enabled in your SSO configuration), and verifies the authenticity of
the token remotely against the IAM.
'
x-tagGroups:
- name: Platform
tags:
- Platform API
- name: Alarms
tags:
- Alarm API
- Alarm notification API
- Alarms
- name: Applications
tags:
- Application API
- Applications
- Application versions
- Application binaries
- Bootstrap user
- Current application
- name: Audits
tags:
- Audit API
- Audits
- name: Device control
tags:
- Device control API
- Device control notification API
- Operations
- Bulk operations
- Device credentials
- New device requests
- Device control via SMS
- name: Events
tags:
- Event API
- Event notification API
- Events
- Attachments
- name: Feature toggles
tags:
- Feature toggles API
- name: Identity
tags:
- Identity API
- External IDs
- name: Inventory
tags:
- Inventory API
- Inventory notification API
- Managed objects
- Binaries
- Child operations
- Query language
- name: Measurements
tags:
- Measurement API
- Measurement notification API
- Measurements
- Measurements specifics
- name: Notifications 2.0
tags:
- About notifications 2.0
- Notification 2.0 API
- Subscriptions
- Tokens
- name: Real-time notifications
tags:
- Real-time notification API
- name: Retentions
tags:
- Retention rules
- name: Tenants
tags:
- Tenant API
- Tenants
- Tenant applications
- Trusted certificates
- Device statistics
- Usage statistics
- Options
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cumulocity/refs/heads/main/openapi/cumulocity-audits-api-openapi.yml