---
id: config-reconfigure-privacy-dashboard
title: "Reconfigure privacy dashboard"
description: "Brings the privacy dashboard deployment in the cluster in line with the record, and restarts it so that it reads its configuration again. Use it to repair a deployment, to complete a deployment that stopped half-way (`status` `1`), to change the host name or to change the release. The privacy dashboard must be deployed or requested."
sidebar_label: "Reconfigure privacy dashboard"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/consent-management-admin-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"}>Reconfigure privacy dashboard</h1>

<MethodEndpoint method={"post"} path={"/v4/config/platform/privacy-dashboard/reconfigure"}></MethodEndpoint>



Brings the privacy dashboard deployment in the cluster in line with the record, and restarts it so that it reads its configuration again. Use it to repair a deployment, to complete a deployment that stopped half-way (`status` `1`), to change the host name or to change the release. The privacy dashboard must be deployed or requested.

The body is optional. A `hostname` or `version` that you send replaces the recorded value; a member that you do not send, or send empty, keeps it. A new host name must be valid and not used by another organisation, and the version must be a release of List privacy dashboard releases. The response is the deployment status after the change.

## 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></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"hostname"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"New host name of the privacy dashboard, under `igrant.io`.","example":"acme-consent.igrant.io"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"New release (a `version` of List privacy dashboard releases).","example":"v2026.10.2"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The deployment status after the change.

</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={"hostname"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Recorded host name of the privacy dashboard. Empty when not deployed.","example":"acme-privacy.igrant.io"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Recorded release of the privacy dashboard. Empty when not deployed.","example":"v2026.10.1"}}></SchemaItem><SchemaItem collapsible={false} name={"status"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`0`, `1`, `2`]"} schema={{"type":"integer","description":"Recorded status: `0` not configured, `1` requested, `2` deployed.","enum":[0,1,2],"example":2}}></SchemaItem><SchemaItem collapsible={false} name={"statusStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Not Configured`, `Requested`, `Deployed`]"} schema={{"type":"string","description":"Label of `status`.","enum":["Not Configured","Requested","Deployed"],"example":"Deployed"}}></SchemaItem><SchemaItem collapsible={false} name={"state"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`not_configured`, `requested`, `running`, `progressing`, `degraded`, `missing`, `drift`, `unknown`]"} schema={{"type":"string","description":"The state of the deployment in the cluster: `not_configured` (no deployment is recorded), `running` (all objects exist, match the record and all replicas are ready), `requested` (all objects exist, but the record is still requested), `progressing` (a rollout is in progress), `degraded` (no ready replica, or the rollout failed), `missing` (one or more objects do not exist), `drift` (the image version or the ingress host differs from the record) or `unknown` (the service cannot read the cluster). The first that applies of `missing`, `drift`, `degraded`, `progressing`, `requested` and `running` is the state.","enum":["not_configured","requested","running","progressing","degraded","missing","drift","unknown"],"example":"running"}}></SchemaItem><SchemaItem collapsible={false} name={"problems"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The problems found, as sentences. Empty when there is none.","items":{"type":"string"},"example":[]}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>kubernetes</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The objects of the deployment in the cluster. Not present for `not_configured` and `unknown`.

</div><SchemaItem collapsible={false} name={"namespace"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Namespace of the objects.","example":"release"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>configMap</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={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the ConfigMap."}}></SchemaItem><SchemaItem collapsible={false} name={"exists"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The ConfigMap exists."}}></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"}>service</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={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the Service."}}></SchemaItem><SchemaItem collapsible={false} name={"exists"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The Service exists."}}></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"}>deployment</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={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the Deployment."}}></SchemaItem><SchemaItem collapsible={false} name={"exists"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The Deployment exists."}}></SchemaItem><SchemaItem collapsible={false} name={"image"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Container image of the Deployment. Empty when it has none."}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Release of the container image."}}></SchemaItem><SchemaItem collapsible={false} name={"desiredReplicas"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer"}}></SchemaItem><SchemaItem collapsible={false} name={"updatedReplicas"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer"}}></SchemaItem><SchemaItem collapsible={false} name={"readyReplicas"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer"}}></SchemaItem><SchemaItem collapsible={false} name={"availableReplicas"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>conditions</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 conditions of the Deployment, as Kubernetes reports them.

</div><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"type"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"status"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"reason"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></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"}>ingress</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={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the Ingress."}}></SchemaItem><SchemaItem collapsible={false} name={"exists"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The Ingress exists."}}></SchemaItem><SchemaItem collapsible={false} name={"hosts"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The hosts that the Ingress serves.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"hostnameMatches"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"The Ingress serves the recorded host name."}}></SchemaItem><SchemaItem collapsible={false} name={"tlsSecretName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the TLS secret of the Ingress. Empty when it has none."}}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"checkedAt"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","description":"Time of the check (UTC).","example":"2026-11-05T09:30:00Z"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"hostname\": \"acme-privacy.igrant.io\",\n  \"version\": \"v2026.10.1\",\n  \"status\": 2,\n  \"statusStr\": \"Deployed\",\n  \"state\": \"running\",\n  \"problems\": [],\n  \"kubernetes\": {\n    \"namespace\": \"release\",\n    \"configMap\": {\n      \"name\": \"string\",\n      \"exists\": true\n    },\n    \"service\": {\n      \"name\": \"string\",\n      \"exists\": true\n    },\n    \"deployment\": {\n      \"name\": \"string\",\n      \"exists\": true,\n      \"image\": \"string\",\n      \"version\": \"string\",\n      \"desiredReplicas\": 0,\n      \"updatedReplicas\": 0,\n      \"readyReplicas\": 0,\n      \"availableReplicas\": 0,\n      \"conditions\": [\n        {\n          \"type\": \"string\",\n          \"status\": \"string\",\n          \"reason\": \"string\",\n          \"message\": \"string\"\n        }\n      ]\n    },\n    \"ingress\": {\n      \"name\": \"string\",\n      \"exists\": true,\n      \"hosts\": [\n        \"string\"\n      ],\n      \"hostnameMatches\": true,\n      \"tlsSecretName\": \"string\"\n    }\n  },\n  \"checkedAt\": \"2026-11-05T09:30:00Z\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"hostname\": \"acme-privacy.igrant.io\",\n  \"version\": \"v2026.10.2\",\n  \"status\": 2,\n  \"statusStr\": \"Deployed\",\n  \"state\": \"progressing\",\n  \"problems\": [\n    \"The rollout is in progress: 0 of 1 replicas ready.\"\n  ],\n  \"kubernetes\": {\n    \"namespace\": \"release\",\n    \"configMap\": {\n      \"name\": \"org-6ae2bf741c3dadfeb27982ec-privacy-config\",\n      \"exists\": true\n    },\n    \"service\": {\n      \"name\": \"org-6ae2bf741c3dadfeb27982ec-privacy-svc\",\n      \"exists\": true\n    },\n    \"deployment\": {\n      \"name\": \"org-6ae2bf741c3dadfeb27982ec-privacy-app\",\n      \"exists\": true,\n      \"image\": \"eu.gcr.io/example-project/privacy-dashboard:privacy-dashboard-v2026.10.2-release\",\n      \"version\": \"v2026.10.2\",\n      \"desiredReplicas\": 1,\n      \"updatedReplicas\": 0,\n      \"readyReplicas\": 0,\n      \"availableReplicas\": 0,\n      \"conditions\": []\n    },\n    \"ingress\": {\n      \"name\": \"org-6ae2bf741c3dadfeb27982ec-privacy-ing\",\n      \"exists\": true,\n      \"hosts\": [\n        \"acme-privacy.igrant.io\"\n      ],\n      \"hostnameMatches\": true,\n      \"tlsSecretName\": \"igrant-io-tls\"\n    }\n  },\n  \"checkedAt\": \"2026-11-05T09:30:00Z\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The privacy dashboard is not deployed (use Deploy privacy dashboard), the body is not valid JSON or has an unknown member, the new host name is not valid or another organisation uses it, the record has no host name or version (delete the privacy dashboard and deploy it again), or the version is not a release of the list (`Privacy dashboard version <version> is not available; choose a release from the list`).

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

An object of the deployment is not found in the cluster during the change.

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

A reconfiguration of the privacy dashboard of the organisation is running already.

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

The installation cannot reach the cluster or read the release registry, or the server could not save the record.

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

The cluster or the release registry did not answer as expected. The record stays at `status` `1`; call again to complete it.

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

This installation does not deploy privacy dashboards (`Privacy dashboard deployment is not configured in this environment`).

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