---
id: update-open-id-conformance-report-token
title: "Set conformance suite token"
description: "Stores the API token of your account on the OpenID Foundation conformance suite. The API then reads your test plans and exports your test logs from the suite for you, with [List conformance test plans](/docs/extensions-api/list-open-id-conformance-report-plans), [Read conformance test plan](/docs/extensions-api/read-open-id-conformance-report-plan) and [Export conformance test log](/docs/extensions-api/export-open-id-conformance-report)."
sidebar_label: "Set conformance suite token"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "put api-method"
info_path: docs/extensions-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"}>Set conformance suite token</h1>

<MethodEndpoint method={"put"} path={"/v4/config/platform/extension/openid-conformance/report-token"}></MethodEndpoint>



Stores the API token of your account on the OpenID Foundation conformance suite. The API then reads your test plans and exports your test logs from the suite for you, with [List conformance test plans](/docs/extensions-api/list-open-id-conformance-report-plans), [Read conformance test plan](/docs/extensions-api/read-open-id-conformance-report-plan) and [Export conformance test log](/docs/extensions-api/export-open-id-conformance-report).

Create the token in the conformance suite. A new token replaces the stored one. The API never returns the token: the read of the extension tells you only that a token is stored (`reportTokenConfigured`). Turning the extension off, or on again, removes the token.

The answer is `404` when the extension is not `enabled`.


## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"token"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The API token of the conformance suite. Spaces at the start and the end are removed; the token must not be empty."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The token is stored.

</div><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={"reportTokenConfigured"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Always `true`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"reportTokenConfigured\": true\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"reportTokenConfigured\": true\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

Bad request. The `Content-Type` is not `application/json` (`Content type must be JSON`), the body is not valid JSON (`Invalid content`), the token is empty (`Token must not be empty`), or the organisation or its wallet is not found.

</div><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={"401"} value={"401"}><div>

The API key is missing or not valid.

</div><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={"404"} value={"404"}><div>

The extension is not `enabled` (`Extension 'openidConformance' is not enabled for organisation '<organisationId>'`).

</div><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={"500"} value={"500"}><div>

Internal server error.

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