openapi: 3.2.0
info:
version: 0.7.0
title: Aeris IoT Watchtowerâ„¢ Activity Logs API
description: '## Introduction
The Aeris IoT Watchtowerâ„¢ API provides access to resources such as real-time events, aggregated events, risk assessment reports, and device group operations.'
termsOfService: https://www.aeris.com/services-terms-of-use/
contact:
email: support@aeris.net
url: https://www.aeris.com/support/
license:
name: Aeris License
url: https://www.aeris.com/services-terms-of-use/
x-audience: external-public
servers:
- url: https://watchtower-api-prd.aeriscloud.com
security:
- oAuth2ClientCredentials: []
tags:
- name: Activity Logs
description: Endpoints for Activity Logs
paths:
/watchtower/v1/activity-logs/device-groups/search:
post:
summary: Get device group activity logs
description: Get activity logs of a device group
operationId: getActivityLogsDeviceGroups
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceGroupActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedDeviceGroupActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/events/search:
post:
summary: Get events activity logs
description: Get events life cycle activity logs
operationId: getActivityLogsEvents
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EventActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedEventActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/events/configs/search:
post:
summary: Get event configs activity logs
operationId: getActivityLogsEventConfigs
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EventConfigActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedEventConfigActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/event-policies/search:
post:
summary: Get event policy activity logs
description: Search activity logs for event policies
operationId: getActivityLogsEventPolicies
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EventPolicyActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedEventPolicyActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/event-policies/export:
post:
summary: Export Event Policy Activity Logs
description: Use this endpoint to export Event Policy Activity Logs as CSV.
operationId: exportActivityLogsEventPolicies
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EventPolicyActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledReport'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/applications/search:
post:
summary: Get applications activity logs
operationId: getActivityLogsApplications
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedApplicationActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/protection-policies/search:
post:
summary: Get protection policies activity logs
operationId: getActivityLogsProtectionPolicies
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProtectionPolicyActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedProtectionPolicyActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/enforcement-rules/search:
post:
summary: Get enforcement rules activity logs
operationId: getActivityLogsEnforcementRules
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EnforcementRuleActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedEnforcementRuleActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/watchtower/v1/activity-logs/location-lists/search:
post:
description: Get location lists activity logs
operationId: getActivityLogsLocationLists
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LocationListActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedLocationListActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
summary: Get activity logs location lists
x-summary-source: derived
/watchtower/v1/activity-logs/service-configurations/search:
post:
summary: Get service configuration activity logs
operationId: getActivityLogsServiceConfigurations
tags:
- Activity Logs
parameters:
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/startTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
- name: serviceConfigurationType
in: query
required: false
schema:
type: string
description: Filter by service configuration type (e.g. SPLIT_BILLING, RATE_LIMIT).
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceConfigurationActivityLogQuery'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PagedServiceConfigurationActivityLog'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
components:
schemas:
PagedApplicationActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApplicationActivityLog'
EventConfigActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
- type: object
properties:
suppressionPeriodType:
$ref: '#/components/schemas/EventConfigSuppressionPeriodType'
suppressionPeriodStart:
$ref: '#/components/schemas/dateTime'
suppressionPeriodEnd:
$ref: '#/components/schemas/dateTime'
BaseActivityLogQueryRequest:
type: object
properties:
activity:
type: string
target:
type: string
userId:
type: string
ProtectionPolicyActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
total:
type: integer
format: int64
description: Total number of items available.
example: 1
minimum: 0
EventPolicyActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
offset:
description: Position in pagination.
type: integer
format: int32
default: 0
minimum: 0
limit:
type: integer
format: int32
description: Number of items to retrieve (10000 max).
minimum: 1
maximum: 10000
default: 20
ApplicationActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
ServiceConfigurationActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
PagedDeviceGroupActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DeviceGroupActivityLog'
EventActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
- type: object
properties:
occurrence:
type: integer
format: int64
accountId:
description: Account Id.
type: integer
format: int32
example: 10407
minimum: 0
DeviceGroupActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
EventActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
- type: object
properties:
occurrence:
type: integer
format: int64
EventConfigSuppressionPeriodType:
type: string
enum:
- ALWAYS
- DURING_TIME_PERIOD
EventPolicyActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
ServiceConfigurationActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
EnforcementRuleActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
DeviceGroupActivityLog:
type: object
properties:
timestamp:
type: string
format: date-time
userId:
type: string
activity:
type: string
target:
type: string
deviceGroups:
type: array
items:
$ref: '#/components/schemas/DeviceGroupInfo'
PagedLocationListActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/LocationListActivityLog'
ApplicationActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
Error:
type: object
properties:
code:
type: integer
description: HTTP code
example: 500
message:
type: string
description: Error message
example: An error encountered in processing the request
timestamp:
type: string
description: ISO DateTime
example: '2025-06-02 09:01:53.678'
path:
type: string
description: Endpoint path at which the error occured
example: /watchtower/v1/events
traceId:
type: string
description: Trace Id
example: ed81f29f-ea9b-4099-aa00-f8ed40b7a567
ProtectionPolicyActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
EnforcementRuleActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
- type: object
properties:
error:
type: string
dateTime:
description: ISO 8601 date time
type: string
format: date-time
example: '2021-07-04T17:36:47Z'
BaseActivityLog:
type: object
properties:
timestamp:
$ref: '#/components/schemas/dateTime'
activity:
type: string
target:
type: string
userId:
type: string
EventConfigActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
PagedEventConfigActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EventConfigActivityLog'
Pagination:
type: object
properties:
total:
$ref: '#/components/schemas/total'
offset:
$ref: '#/components/schemas/offset'
limit:
$ref: '#/components/schemas/limit'
PagedProtectionPolicyActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ProtectionPolicyActivityLog'
LocationListActivityLog:
allOf:
- $ref: '#/components/schemas/BaseActivityLog'
PagedEventActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EventActivityLog'
ScheduledReport:
type: object
properties:
reportId:
description: Report Id
type: string
example: 7ae9e22d-8ad4-4a69-950a-6b13d75f0c74
status:
$ref: '#/components/schemas/ReportStatus'
statusEndpoint:
description: Report Status URL
type: string
example: /watchtower/v1/scheduled-reports/7ae9e22d-8ad4-4a69-950a-6b13d75f0c74
PagedEnforcementRuleActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EnforcementRuleActivityLog'
PagedEventPolicyActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EventPolicyActivityLog'
ReportStatus:
description: Report status
type: string
example: Processing
enum:
- Success
- Processing
- Error
- NotStarted
PagedServiceConfigurationActivityLog:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ServiceConfigurationActivityLog'
LocationListActivityLogQuery:
allOf:
- $ref: '#/components/schemas/BaseActivityLogQueryRequest'
DeviceGroupInfo:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
colorCode:
type: string
deviceGroupType:
type: string
parameters:
startTime:
name: startTime
in: query
required: true
description: The start timestamp. (inclusive)
example: '2021-07-01T06:30:00Z'
schema:
$ref: '#/components/schemas/dateTime'
endTime:
name: endTime
in: query
required: true
description: The end timestamp. (exclusive)
example: '2021-07-05T06:30:00Z'
schema:
$ref: '#/components/schemas/dateTime'
sort:
name: sort
in: query
description: Use sort=comma-separated-fields[:asc|desc] to sort the result.
example: deviceId,updateTime:desc
schema:
type: string
accountId:
name: X-Watchtower-Account-Id
in: header
description: Account Id
required: true
schema:
$ref: '#/components/schemas/accountId'
example: 1002000010
offset:
name: offset
in: query
description: The position in pagination. Specifies the starting row offset into the result set returned. For example, if the page size (limit) is 10, then to select the second page, pass the offset as 10 to retrieve items 11 to 20.
Search parameters must be consistent across pages.
schema:
$ref: '#/components/schemas/offset'
authorization:
name: Authorization
in: header
description: Bearer Token for authentication
required: true
schema:
type: string
pattern: ^Bearer [A-Za-z0-9-._~+/]+=*$
example: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ...
limit:
name: limit
in: query
description: The number of items to retrieve per page (10000 max).
schema:
$ref: '#/components/schemas/limit'
responses:
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 429
message: 'Rate Limit Exceeded (XX) for clientId: XXXXXX. Please retry after XXX seconds'
timestamp: 2025-06-01 13:28:03.967000
path: /watchtower/v1/...
traceId: c3db9d7a432317363c8bc5ddb5aadf4b
'401':
description: Not authorized.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 401
message: Unauthorized
timestamp: 2025-06-01 13:28:03.967000
path: /watchtower/v1/...
traceId: c3db9d7a432317363c8bc5ddb5aadf4b
'403':
description: Forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 403
message: Forbidden
timestamp: 2025-06-01 13:28:03.967000
path: /watchtower/v1/...
traceId: c3db9d7a432317363c8bc5ddb5aadf4b
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 400
message: Bad Request
timestamp: 2025-06-01 13:28:03.967000
path: /watchtower/v1/...
traceId: c3db9d7a432317363c8bc5ddb5aadf4b
'500':
description: Internal Server Error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 500
message: Internal Server Error
timestamp: 2025-06-01 13:28:03.967000
path: /watchtower/v1/...
traceId: c3db9d7a432317363c8bc5ddb5aadf4b
securitySchemes:
oAuth2ClientCredentials:
type: oauth2
description: This API uses OAuth 2 with the Client Credentials flow.
flows:
clientCredentials:
tokenUrl: /watchtower/v1/auth/token
scopes: {}