---
id: audit-admin-logs
title: "List Activity Logs"
description: "Lists the Activity Logs of the organisation, the newest first, one page at a time: the sign-ins of the administrators (also the refused sign-ins and the locked accounts), the calls that change data (each method except `GET`; a request that changes nothing, such as [Create SSE ticket](/docs/openid4vc-api/config-create-sse-ticket), has no entry), the webhooks that the platform sends, and the changes that a platform admin makes to the organisation (OrgUpdates entries). An entry holds no e-mail address: `userName` is the display name of the actor at the time of the read."
sidebar_label: "List Activity Logs"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>List Activity Logs</h1>

<MethodEndpoint method={"get"} path={"/v4/audit/platform/admin/logs"}></MethodEndpoint>



Lists the Activity Logs of the organisation, the newest first, one page at a time: the sign-ins of the administrators (also the refused sign-ins and the locked accounts), the calls that change data (each method except `GET`; a request that changes nothing, such as [Create SSE ticket](/docs/openid4vc-api/config-create-sse-ticket), has no entry), the webhooks that the platform sends, and the changes that a platform admin makes to the organisation (OrgUpdates entries). An entry holds no e-mail address: `userName` is the display name of the actor at the time of the read.

Use `logType` to keep only some types, and `offset` and `limit` to page through the list. `auditLogsStats` counts all the entries of the organisation, whatever the filter and the page.

No operation deletes an entry: the platform deletes the entries after the retention period of the installation (30 days by default). An API key with the older scope `audit` can also call this operation.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Query Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Number of records to skip for pagination. A negative or unreadable value falls back to `0`.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"limit","in":"query","description":"Maximum number of records to return per page.","required":false,"schema":{"type":"integer","default":10}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"logType","in":"query","description":"Type of the entries: 1 Security, 2 API calls, 3 OrgUpdates, 4 UserUpdates, 5 Webhooks. Repeat the parameter, or separate the types with commas, for more than one type. The service ignores a value that is not a whole number of 1 or more. Without a usable value, the response has the entries of each type.","required":false,"schema":{"type":"string"},"example":"1,3"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The entries on the page, the pagination data and the number of entries of each type.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>logs</strong><span className={"openapi-schema__name"}> object[]</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The entries on this page, the newest first.

</div><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the entry.","example":"6af1c2d3e4f5a6b7c8d9e0f1"}}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`1`, `2`, `3`, `4`, `5`]"} schema={{"type":"integer","description":"Type of the entry: 1 Security, 2 API calls, 3 OrgUpdates, 4 UserUpdates, 5 Webhooks.","enum":[1,2,3,4,5],"example":1}}></SchemaItem><SchemaItem collapsible={false} name={"typeStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Security`, `API calls`, `OrgUpdates`, `UserUpdates`, `Webhooks`]"} schema={{"type":"string","description":"Name of the type.","enum":["Security","API calls","OrgUpdates","UserUpdates","Webhooks"],"example":"Security"}}></SchemaItem><SchemaItem collapsible={false} name={"orgId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the organisation.","example":"6ae2bf741c3dadfeb27982ec"}}></SchemaItem><SchemaItem collapsible={false} name={"userId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Account id of the actor: the administrator (also the administrator of the API key of a call), or the individual. Empty for an operator command and an API key usage alert.","example":"6ae2bf74a401855d2806ab5d"}}></SchemaItem><SchemaItem collapsible={false} name={"userName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Display name of the actor at the time of the read, never an e-mail address. For an administrator it is the name of the account, the account id when the account has no name, or `Deleted account` when the account is gone. For another actor it is a name that is not personal data: the name of an operator command, the name of the API key of an individual entry or a usage alert, or the organisation id of a webhook entry. It is empty for an individual.","example":"Jane Doe"}}></SchemaItem><SchemaItem collapsible={false} name={"action"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The action. A Security entry of an administrator is `Signed in`, `Sign-in refused: reason=<code>` or `Account locked: reason=<code>`. The reason codes are `wrong_password`, `wrong_one_time_password`, `one_time_password_expired`, `account_locked`, `account_disabled`, `organisation_login_disabled`, `identity_link_conflict` and `too_many_failures`. When the platform did not record the entries before this one (at most 60 refusal entries for each organisation in a minute), the action ends with ` suppressed=<n>`. An API call is `<method>: <path> called by user: <account id>`, with ` via api key: <key name>` for an API key. An OrgUpdates entry is `<event>: <id> <detail>`.","example":"Sign-in refused: reason=wrong_password"}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Time of the entry, UTC (`2006-01-02T15:04:05Z`).","example":"2026-11-09T09:30:15Z"}}></SchemaItem><SchemaItem collapsible={false} name={"role"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Role of the actor, when the entry has one: the role of the caller of an API call (for example `organisation_admin`), or `platformAdmin` or `operatorCommand` for an OrgUpdates entry. An empty string otherwise.","example":""}}></SchemaItem><SchemaItem collapsible={false} name={"authType"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Authentication of the call (`access_token`, `api_key`, or `operator_command` for an operator command), when the entry has one. An empty string otherwise.","example":""}}></SchemaItem><SchemaItem collapsible={false} name={"apiKeyId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the API key of the call. An empty string for another call.","example":""}}></SchemaItem><SchemaItem collapsible={false} name={"apiKeyName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the API key of the call, as an administrator gave it. An empty string for another call.","example":""}}></SchemaItem><SchemaItem collapsible={false} name={"event"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Only in an OrgUpdates entry: the change. `organisation_created`, `organisation_wallet_deployed`, `features_changed`, `platform_operator_set`, `organisation_suspended`, `organisation_resumed`, `organisation_deletion_started`, `organisation_type_created`, `organisation_type_updated` or `organisation_type_deleted`. A new value can come: show an unknown value with a general text.","example":"features_changed"}}></SchemaItem><SchemaItem collapsible={false} name={"objectType"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Only in an OrgUpdates entry: the kind of the object that changed, `organisation` or `organisationType`.","example":"organisation"}}></SchemaItem><SchemaItem collapsible={false} name={"objectId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Only in an OrgUpdates entry: the id of the object. Absent for an entry of an older release that did not record it.","example":"6af08b7a38e8f33dcf799655"}}></SchemaItem><SchemaItem collapsible={false} name={"objectName"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Only in an OrgUpdates entry: the name of the object at the time of the read. For an object that is gone, the name at the time of the change.","example":"Acme Corporation"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>details</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Only in a `features_changed` entry: the features of the organisation that changed, with their new value.

</div><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>features</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Each feature that changed, by its JSON name, with its new value.

</div><SchemaItem name={"property name*"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>pagination</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"currentPage"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Current page number","example":1}}></SchemaItem><SchemaItem collapsible={false} name={"totalItems"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of items available","example":25}}></SchemaItem><SchemaItem collapsible={false} name={"totalPages"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of pages based on limit","example":3}}></SchemaItem><SchemaItem collapsible={false} name={"limit"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Number of items per page","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"hasPrevious"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a previous page","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"hasNext"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a next page","example":true}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>auditLogsStats</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The number of entries of the organisation for each type, for all the entries (not only the filtered page). All `0` when the service cannot count them.

</div><SchemaItem collapsible={false} name={"total"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"All the entries.","example":42}}></SchemaItem><SchemaItem collapsible={false} name={"security"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The Security entries (type 1).","example":12}}></SchemaItem><SchemaItem collapsible={false} name={"apiCalls"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The API call entries (type 2).","example":27}}></SchemaItem><SchemaItem collapsible={false} name={"orgUpdates"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The OrgUpdates entries (type 3).","example":1}}></SchemaItem><SchemaItem collapsible={false} name={"userUpdates"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The UserUpdates entries (type 4).","example":0}}></SchemaItem><SchemaItem collapsible={false} name={"webhooks"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The Webhooks entries (type 5).","example":2}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"logs\": [\n    {\n      \"id\": \"6af1c2d3e4f5a6b7c8d9e0f1\",\n      \"type\": 1,\n      \"typeStr\": \"Security\",\n      \"orgId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"userId\": \"6ae2bf74a401855d2806ab5d\",\n      \"userName\": \"Jane Doe\",\n      \"action\": \"Sign-in refused: reason=wrong_password\",\n      \"timestamp\": \"2026-11-09T09:30:15Z\",\n      \"role\": \"\",\n      \"authType\": \"\",\n      \"apiKeyId\": \"\",\n      \"apiKeyName\": \"\",\n      \"event\": \"features_changed\",\n      \"objectType\": \"organisation\",\n      \"objectId\": \"6af08b7a38e8f33dcf799655\",\n      \"objectName\": \"Acme Corporation\",\n      \"details\": {\n        \"features\": {\n          \"webhooks\": true,\n          \"walletUnit\": false\n        }\n      }\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 25,\n    \"totalPages\": 3,\n    \"limit\": 10,\n    \"hasPrevious\": false,\n    \"hasNext\": true\n  },\n  \"auditLogsStats\": {\n    \"total\": 42,\n    \"security\": 12,\n    \"apiCalls\": 27,\n    \"orgUpdates\": 1,\n    \"userUpdates\": 0,\n    \"webhooks\": 2\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"logs\": [\n    {\n      \"id\": \"6af1c2d3e4f5a6b7c8d9e0f3\",\n      \"type\": 2,\n      \"typeStr\": \"API calls\",\n      \"orgId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"userId\": \"6ae2bf74a401855d2806ab5d\",\n      \"userName\": \"Jane Doe\",\n      \"action\": \"POST: /v4/config/platform/webhook called by user: 6ae2bf74a401855d2806ab5d via api key: Issuer backend\",\n      \"timestamp\": \"2026-11-09T09:32:40Z\",\n      \"role\": \"organisation_admin\",\n      \"authType\": \"api_key\",\n      \"apiKeyId\": \"6af0a1b2c3d4e5f6a7b8c9d0\",\n      \"apiKeyName\": \"Issuer backend\"\n    },\n    {\n      \"id\": \"6af1c2d3e4f5a6b7c8d9e0f2\",\n      \"type\": 3,\n      \"typeStr\": \"OrgUpdates\",\n      \"orgId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"userId\": \"6ae2bf74a401855d2806ab6a\",\n      \"userName\": \"Platform Admin\",\n      \"action\": \"features_changed: 6af08b7a38e8f33dcf799655 webhooks=true\",\n      \"timestamp\": \"2026-11-09T09:31:02Z\",\n      \"role\": \"platformAdmin\",\n      \"authType\": \"access_token\",\n      \"apiKeyId\": \"\",\n      \"apiKeyName\": \"\",\n      \"event\": \"features_changed\",\n      \"objectType\": \"organisation\",\n      \"objectId\": \"6af08b7a38e8f33dcf799655\",\n      \"objectName\": \"Acme Corporation\",\n      \"details\": {\n        \"features\": {\n          \"webhooks\": true\n        }\n      }\n    },\n    {\n      \"id\": \"6af1c2d3e4f5a6b7c8d9e0f1\",\n      \"type\": 1,\n      \"typeStr\": \"Security\",\n      \"orgId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"userId\": \"6ae2bf74a401855d2806ab5d\",\n      \"userName\": \"Jane Doe\",\n      \"action\": \"Signed in\",\n      \"timestamp\": \"2026-11-09T09:30:15Z\",\n      \"role\": \"\",\n      \"authType\": \"\",\n      \"apiKeyId\": \"\",\n      \"apiKeyName\": \"\"\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 3,\n    \"totalPages\": 1,\n    \"limit\": 10,\n    \"hasPrevious\": false,\n    \"hasNext\": false\n  },\n  \"auditLogsStats\": {\n    \"total\": 3,\n    \"security\": 1,\n    \"apiCalls\": 1,\n    \"orgUpdates\": 1,\n    \"userUpdates\": 0,\n    \"webhooks\": 0\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the API key or token is not valid.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"403"} value={"403"}><div>

The API key or token does not allow this call. An API key without the scope of the operation gets the older body `{"Code", "Message"}`. An `X-SandboxOrgId` header that names another sandbox organisation than the one of the API key gets `{"errorCode", "errorDescription"}`. When a platform admin has turned off the feature of the operation for the organisation, the answer has `errorKey` `feature_disabled` and the member `feature` (the name of the feature).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"MOD1"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></TabItem><TabItem label={"Older error body"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The HTTP status.","example":403}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What went wrong.","example":"Unauthorized access;User doesn't have enough permissions;"}}></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Unexpected server error (`Failed to fetch action logs`).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      