Skip to content
innovorder
⌘K

Organization

Audit History

The audit history records every creation, modification and deletion performed on the entities of a brand (products, menus, customers, users, modules, restaurant openings/closings...). Use it to track who changed what and when, or to synchronize an external system with recent changes.

Access Flag Requirement

These endpoints require the CAN_ACCESS_BRAND_HISTORY access flag on the calling user. The requested brandId is verified against the rights of the authenticated user.

GET/historyList Audit History

Retrieve the paginated audit history of a brand. brandId, limit and offset are required (a 400 validation error is returned otherwise). All other query parameters are optional filters.

Parameters

NameTypeRequiredDescription
brandIdintegerYesThe unique identifier of the brand (query parameter).
limitintegerYesMaximum number of entries to return (query parameter).
offsetintegerYesNumber of entries to skip (query parameter).
userIdintegerNoFilter by the ID of the user who performed the action (query parameter).
searchstringNoFree-text search on the entity name and the entity type (query parameter). To filter by user email, use the "user" parameter instead.
orderBystringNoSort expression in the format "<field> <ASC|DESC>", e.g. "created_at DESC" (query parameter).
restaurantIdsstringNoComma-separated list of restaurant IDs to filter on, e.g. "12,34" (query parameter).
entityTypestringNoFilter by entity type: GRANT, ENTRANCE_FEE, PRICING_RULE, PRODUCT, STEP, CATEGORY, MENU, CUSTOMER, CUSTOMERS_IMPORT, CUSTOMERS_UPDATE, USER, CHANNEL, CONSUMPTION_MODE, ORDER, BRAND, RESTAURANT or MODULE (query parameter).
eventDatestringNoFilter on the event date with a partial match, e.g. "2026-07-01" (query parameter).
entityNamestringNoFilter by entity name (query parameter).
userstringNoFilter by the email of the user who performed the action (query parameter).
actionstringNoFilter by action: CREATE, UPDATE, DELETE, OPEN, CLOSE, DUPLICATE, ACTIVATE, DEACTIVATE, CANCEL, IMPORT or CONVERT (query parameter).

Response

json
{
  "status": 200,
  "code": "history_succeed",
  "message": "The history has been found.",
  "data": {
    "count": 128,
    "data": [
      {
        "historyId": "1f0c2a4e-6f3a-4a5b-9d2e-8c7b6a5d4e3f",
        "action": "UPDATE",
        "entityId": 34567,
        "entityName": "Cheeseburger",
        "entityType": "PRODUCT",
        "entityRawData": "{\"price\":950}",
        "brandId": 100,
        "userId": 4242,
        "userEmail": "manager@innovorder.com",
        "restaurantId": 200,
        "eventDate": "2026-07-01T10:15:00.000Z"
      }
    ]
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"history_succeed"Machine-readable application code for the result.
messagestring"The history has been found."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.countinteger128Total number of matching records.
data.dataarray[…]Endpoint-specific response payload.
data.data[]object{…}Endpoint-specific response payload.
data.data[].historyIdstring"1f0c2a4e-6f3a-4a5b-9d2e-8c7b6a5d4e3f"Identifier of the associated history.
data.data[].actionstring"UPDATE"The action value.
data.data[].entityIdinteger34567Identifier of the associated entity.
data.data[].entityNamestring"Cheeseburger"The entity name value.
data.data[].entityTypestring"PRODUCT"The entity type value.
data.data[].entityRawDatastring"{\"price\":950}"The entity raw data value.
data.data[].brandIdinteger100Identifier of the brand.
data.data[].userIdinteger4242Identifier of the user.
data.data[].userEmailstring"manager@innovorder.com"The user email value.
data.data[].restaurantIdinteger200Identifier of the restaurant.
data.data[].eventDatestring"2026-07-01T10:15:00.000Z"Date or timestamp for event.

GET/history/{historyId}Get Audit History Entry

Retrieve the detail of a single audit history entry by its identifier. The response is a computed detail view: it includes a field-by-field diff against the previous state of the entity (for the first recorded event, all fields appear with an undefined oldValue).

Parameters

NameTypeRequiredDescription
historyIdstringYesThe unique identifier (UUID) of the history entry.

Response

json
{
  "status": 200,
  "code": "audit_found",
  "message": "The audit has been found.",
  "data": {
    "auditName": "Cheeseburger",
    "auditType": "PRODUCT",
    "action": "UPDATE",
    "auditDate": "2026-07-01T10:15:00.000Z",
    "diff": [
      {
        "fieldName": "price",
        "oldValue": 990,
        "newValue": 950
      }
    ],
    "user": {
      "mail": "manager@innovorder.com",
      "id": 4242
    },
    "rawData": "{\"price\":950}"
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"audit_found"Machine-readable application code for the result.
messagestring"The audit has been found."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.auditNamestring"Cheeseburger"The audit name value.
data.auditTypestring"PRODUCT"The audit type value.
data.actionstring"UPDATE"The action value.
data.auditDatestring"2026-07-01T10:15:00.000Z"Date or timestamp for audit.
data.diffarray[…]List of diff entries.
data.diff[]object{…}Object containing diff fields.
data.diff[].fieldNamestring"price"The field name value.
data.diff[].oldValueinteger990The old value value.
data.diff[].newValueinteger950The new value value.
data.userobject{…}Object containing user fields.
data.user.mailstring"manager@innovorder.com"The mail value.
data.user.idinteger4242The id value.
data.rawDatastring"{\"price\":950}"The raw data value.