---
id: onboard-read-platform-operator
title: "Read platform operator information"
description: "Tells whether the organisation of the caller is the platform operator organisation, whether the caller is a platform admin, and whether the installation has an e-mail service. Every admin can call it with the access token of their login. The dashboard reads it to show or hide the functions of a platform admin. See the [Platform Admin Guide](/docs/platform-admin-guide/)."
sidebar_label: "Read platform operator information"
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"}>Read platform operator information</h1>

<MethodEndpoint method={"get"} path={"/v4/onboard/platform/operator"}></MethodEndpoint>



Tells whether the organisation of the caller is the platform operator organisation, whether the caller is a platform admin, and whether the installation has an e-mail service. Every admin can call it with the access token of their login. The dashboard reads it to show or hide the functions of a platform admin. See the [Platform Admin Guide](/docs/platform-admin-guide/).

<div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The platform operator information of the caller.

</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={"isPlatformOperatorOrganisation"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The organisation of the caller is the platform operator organisation.","example":true}}></SchemaItem><SchemaItem collapsible={false} name={"isPlatformAdmin"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The caller is a platform admin.","example":true}}></SchemaItem><SchemaItem collapsible={false} name={"emailEnabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The installation has an e-mail service. Without it, invitations and password resets cannot be sent: use a one-time password.","example":true}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"isPlatformOperatorOrganisation\": true,\n  \"isPlatformAdmin\": true,\n  \"emailEnabled\": true\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"isPlatformOperatorOrganisation\": true,\n  \"isPlatformAdmin\": true,\n  \"emailEnabled\": true\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the access token is not valid or has expired.

</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 call uses an API key. Only the login of an admin can call this operation; an API key gets the older body `{"Code", "Message"}`.

</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></ApiTabs></div></div>
      