Voltair Events API
The Events API from Voltair — 2 operation(s) for events.
The Events API from Voltair — 2 operation(s) for events.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/voltair-events-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Voltair ApiKeys Events API
version: 0.1.0
description: 'Infrastructure inspection platform API. All endpoints are scoped to the authenticated organization via Bearer JWT or API key.
All timestamp fields on this API (createdAt, updatedAt, scheduledFor, capturedAt, expiresAt, deletedAt, etc.) are Unix timestamps in milliseconds since the epoch (UTC). Both request and response bodies use this representation.'
servers:
- url: /
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: Events
paths:
/events:
get:
tags:
- Events
operationId: listEvents
summary: List events
parameters:
- name: resourceType
in: query
schema:
type: string
description: Comma-separated resource types
- name: resourceId
in: query
schema:
type: string
format: uuid
- name: action
in: query
schema:
type: string
description: Comma-separated actions (create, update, delete)
- name: actorId
in: query
schema:
type: string
format: uuid
- name: after
in: query
schema:
type: number
description: Unix timestamp in milliseconds — events after this time
- name: before
in: query
schema:
type: number
description: Unix timestamp in milliseconds — events before this time
- $ref: '#/components/parameters/LimitParam'
- $ref: '#/components/parameters/CursorParam'
responses:
'200':
description: Success
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/Event'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
/events/{eventId}:
parameters:
- name: eventId
in: path
required: true
schema:
type: string
format: uuid
get:
tags:
- Events
operationId: getEvent
summary: Get event
responses:
'200':
description: Success
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Event'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
Event:
type: object
required:
- id
- organizationId
- transactionId
- resourceType
- resourceId
- resourceIds
- resourceName
- action
- actorId
- actorType
- actorName
- actorRoleName
- actorIsSuperAdmin
- timestamp
- before
- after
properties:
id:
type: string
format: uuid
organizationId:
type: string
format: uuid
transactionId:
type: string
format: uuid
resourceType:
$ref: '#/components/schemas/EventResourceType'
resourceId:
type:
- string
- 'null'
format: uuid
description: Single resource; null for bulk events
resourceIds:
type:
- array
- 'null'
items:
type: string
format: uuid
description: Bulk events; null for single-resource events
resourceName:
type: string
action:
$ref: '#/components/schemas/EventActionType'
actorId:
type: string
format: uuid
actorType:
type:
- string
- 'null'
enum:
- user
- api_key
- system
description: Type of the actor (resolved at read time). Null if the actor row is not visible under the current org RLS scope (e.g. a Voltair super admin who has since switched to a different organization).
actorName:
type:
- string
- 'null'
description: 'Display name for the actor: ''first last'' for users, api_key name for api_keys, ''System'' for system actors. Null when the actor row is not resolvable.'
actorRoleName:
type:
- string
- 'null'
description: Name of the actor's role (e.g. 'Admin', 'Super Admin'). Null when the role row is not resolvable.
actorIsSuperAdmin:
type:
- boolean
- 'null'
description: True when the actor's role slug is 'super-admin'. Used by the UI to render 'Voltair Admin' instead of the underlying user's name.
timestamp:
type: number
before:
type:
- object
- 'null'
additionalProperties: true
description: Null for create; delta for update; full row for delete
after:
type:
- object
- 'null'
additionalProperties: true
description: Full row for create; delta for update; null for delete
ErrorResponse:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Machine-readable error code
message:
type: string
description: Human-readable description
details:
type: object
additionalProperties: true
description: Optional structured info (e.g. field-level validation errors, conflictingEventIds)
EventActionType:
type: string
enum:
- create
- update
- delete
EventResourceType:
type: string
enum:
- site
- cluster
- mission
- cluster_visit
- site_visit
- mission_media
- asset
- defect
- site_inspection
- asset_inspection
- organization
- user
- role
- api_key
- webhook
PaginationMeta:
type: object
required:
- cursor
properties:
cursor:
type:
- string
- 'null'
description: Opaque cursor for the next page; null when no more results
total:
type: integer
description: Total matching results across all pages; included when cheaply computable
responses:
NotFound:
description: Resource not found
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Forbidden:
description: Insufficient permissions
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Authentication required
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalError:
description: Internal server error
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
TooManyRequests:
description: Rate limit exceeded
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
X-RateLimit-Limit:
schema:
type: integer
description: Maximum requests per window
X-RateLimit-Remaining:
schema:
type: integer
description: Requests remaining in current window
X-RateLimit-Reset:
schema:
type: number
description: Unix timestamp (ms) when the window resets
Retry-After:
schema:
type: integer
description: Seconds until the next rate limit window
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
XRequestId:
description: Unique request identifier (UUID)
schema:
type: string
format: uuid
parameters:
CursorParam:
name: cursor
in: query
schema:
type: string
description: Opaque pagination cursor from a previous response
LimitParam:
name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 200
description: Page size (default 50, max 200)
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Cognito JWT access token
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: Organization-scoped API key