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: {}