List Audit Events
Beta/v1/core/audit-eventsThis endpoint is idempotent. Learn more
Returns a paginated list of audit events, newest first.
Results cover every change where your account is either the acting account or the account that was acted upon, so a customer's or supplier's changes to your records appear alongside your own. The q parameter searches the resource type, action, resource ID, and originating request ID.
cursoroptional stringOpaque cursor token identifying where the page of results starts.
Use the cursor value embedded in a previous response's next_page_url or previous_page_url to fetch the adjacent page. Omit to start from the first page.
limitoptional integerMaximum number of results to return in a single page.
qoptional stringFree-text search term used to filter results.
Which fields are matched against the term varies by endpoint.
starts_atoptional string (date-time)Restricts results to audit events on or after this timestamp.
ends_atoptional string (date-time)Restricts results to audit events on or before this timestamp.
resource_types[]optional arrayenumValues:accountactorentityFilter by the resource type of the audited entity.
The full set of valid values is available from the List Audit Event Resource Types endpoint.
resource_ids[]optional arrayFilter by the audited resource IDs.
root_resource_typeoptional stringenumValues:accountactorentityScope results to a root record's entire history tree.
Returns every event whose root resource matches, covering the root record itself and all of its descendants — for example a sales order together with its lines, picks, shipments, and invoices. Both root_resource_type and root_resource_id must be supplied together; supplying only one has no effect.
root_resource_idoptional stringID of the root record whose history tree to return.
Only applied when paired with root_resource_type.
actor_ids[]optional arrayFilter by the actor identifier.
Matches the event's actor.id: a user ID for user actors, an API key ID for api_key actors, or an agent ID for agent actors.
actor_types[]optional arrayenumValues:userapi_keyagentFilter by the actor type.
Events are recorded for actors of type user, api_key, and agent — the last covering changes an OpenMRP agent made on your account's behalf.
actions[]optional arrayenumValues:createupdateupsertFilter by the mutation type recorded on the event.
actor_account_ids[]optional arrayFilter by the acting account: the account that performed the mutation.
Results are always scoped to events where your account is either the acting account or the target account; this narrows that set to specific acting accounts — for example a specific customer's account that mutated a resource on your account.
target_account_ids[]optional arrayFilter by the target account the mutation was performed against (the event's account).
Results are always scoped to events where your account is either the acting account or the target account; this narrows that set to specific target accounts — for example a specific customer's or supplier's account.
include[]optional arrayenumValues:accountactorchangesSub-objects to expand in the response. When omitted, sub-objects are returned as null.
objectstringenumValues:listResource type identifier.
page_infoobjectPagination metadata.
next_page_urlstringnullableRelative URL that fetches the next page of results.
previous_page_urlstringnullableRelative URL that fetches the previous page of results.
has_next_pagebooleanWhether more results exist after this page.
has_prev_pagebooleanWhether results exist before this page.
dataarray of audit_eventResources in this page.
idstringAudit event ID.
objectstringenumValues:audit_eventResource type identifier.
actionstringenumValues:createupdateupsertThe type of action this event records.
create: the resource was created.update: one or more fields were changed.delete: the resource was deleted.restore: a previously deleted resource was restored.archive: the resource was archived.approve: a human approved a gated action, such as allowing a review-gated agent tool to run.deny: a human denied a gated action, such as rejecting a review-gated agent tool.
resource_typestringenumValues:accountactorentityResource type of the audited entity.
resource_idstringAudited resource ID.
actoractorExpandablenullableActor who performed the mutation.
idstringUnique identifier of the actor.
objectstringenumValues:actorResource type identifier.
typestringenumValues:userapi_keyagentActor type.
user: a human user account.api_key: a programmatic caller authenticating with an API key.agent: an automated agent acting on the account's behalf.group: a shared group identity, such as a "Customer Service" persona, rather than a single individual.
namestringnullableThe actor's display name.
handlestringnullableHuman-readable handle identifying the actor.
- For
useractors: the user's email address. - For
api_keyactors: the redacted key value.
Other actor types carry no handle.
avatar_urlstringnullableURL of the actor's profile photo, if one is set.
Only populated for user actors.
The role the actor holds in the account, which determines what it is permitted to do.
null in this endpoint.accountaccountExpandablenullableAccount the audited mutation was performed against.
For a mutation on one of your own resources this is your account; when you act on a customer's or supplier's account, it is that account.
idstringAccount ID.
objectstringenumValues:accountResource type identifier.
namestringThe account's display name.
The address billed by default on orders for this account.
null in this endpoint.The address shipped to by default on orders for this account.
null in this endpoint.brandingaccount_brandingnullableCustomer-facing branding for the account, such as the logo, support contacts, and social links.
null in this endpoint.portalaccount_portalnullableThe account's customer portal settings, including the portal URL slug.
null in this endpoint.created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
Field-level changes recorded for this event.
Only fields OpenMRP tracks for that resource type are compared, and only those whose value actually differs are listed. Actions that do not alter stored fields, such as approve and deny, generally record no changes.
objectstringenumValues:listResource type identifier.
page_infoobjectPagination metadata.
next_page_urlstringnullableRelative URL that fetches the next page of results.
previous_page_urlstringnullableRelative URL that fetches the previous page of results.
has_next_pagebooleanWhether more results exist after this page.
has_prev_pagebooleanWhether results exist before this page.
dataarray of audit_field_changeResources in this page.
objectstringenumValues:audit_field_changeResource type identifier.
fieldstringName of the changed field.
Field names come from the audited record's stored representation and can differ slightly from the corresponding field on the API resource — for example commission_policy_code rather than commission_policy.
old_valueobjectnullablePrevious value as a JSON fragment.
null on create events, where the field had no prior value.
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
new_valueobjectnullableNew value as a JSON fragment.
null on delete events, where the field has no remaining value.
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
metadataobjectExpandablenullableArbitrary JSON metadata for the mutation (e.g. reason, source, tags).
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
Log of the API request that caused the mutation.
Changes that did not originate from an API request have no originating request log.
idstringRequest log ID.
objectstringenumValues:request_logResource type identifier.
methodstringenumValues:GETPOSTPUTHTTP method.
hoststringRequest host.
Usually api.openmrp.ai.
pathstringThe exact path the request was made to, including path parameter values.
normalized_routestringThe route template the request matched, with path parameters left as placeholders.
For example /v1/sales/customers/{id} is the normalized route for the request path /v1/sales/customers/ac_.... Falls back to the raw path when the request did not match a registered route.
query_paramsobjectnullableQuery-string parameters the request was made with, as a JSON object.
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
status_codeintegerHTTP response status code (e.g. 200, 404).
latency_usintegerRequest latency in microseconds.
Measured at the API edge, from the moment the request was received until the response was written, so it excludes network time between your client and OpenMRP.
api_versionstringnullableThe API version the request was served with.
Taken from the OpenMRP-Version header the caller sent; requests rejected for omitting that header record no version.
client_ipstringnullableClient IP address the request came from.
Not recorded for requests an OpenMRP agent made on your behalf, since those originate inside OpenMRP's own network.
user_agentstringnullableUser agent.
referrerstringnullableReferrer header.
error_codestringnullableenumValues:expired_tokenapi_key_expiredapi_key_revokedMachine-readable API error code.
Matches the code of the error response the caller received. Populated only for failed requests.
error_messagestringnullableHuman-readable error message.
The same message the caller received. Populated only for failed requests.
occurred_atstring (date-time)When the request was received.
Request logs are ordered and date-filtered by this timestamp rather than by created_at.
created_atstring (date-time)When the log entry was written.
accountaccountnullableAccount targeted by the request: the account the request acted upon.
Results are scoped to logs where your account is either the acting account or the target account. Use the target_account_ids query parameter to filter by which account was acted upon, and actor_account_ids to filter by who acted.
null in this endpoint.actoractornullableActor who made the request.
null in this endpoint.idempotency_keystringnullableUser-provided idempotency key.
request_bodyobjectnullableThe JSON body the request was sent with.
Sensitive values such as passwords, tokens, and secrets are redacted before the body is stored. Bodies larger than 256 KB are not stored in full; a small marker object with _truncated set to true is stored in their place.
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
response_bodyobjectnullableThe JSON body OpenMRP responded with.
Sensitive values such as generated API key secrets are redacted before the body is stored. Bodies larger than 256 KB are not stored in full; a small marker object with _truncated set to true is stored in their place.
Encoded as a JSON value (object, array, string, number, boolean, or null), not a JSON-encoded string.
idempotency_keystringnullableIdempotency key of the originating request.
source_ipstringnullableOriginating client IP address.
occurred_atstring (date-time)When the audited mutation occurred.
Audit events are ordered and date-filtered by this timestamp rather than by created_at.
created_atstring (date-time)When the audit event record was written.
Slightly later than occurred_at, since events are recorded out of band from the request that caused them.
Responses
Successful response for List Audit Events