---
id: audit-read-record
title: "Get data agreement"
description: "This endpoint is used to fetch a single data agreement for audit purposes, e.g. by an external third party."
sidebar_label: "Get data agreement"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get 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"}>Get data agreement</h1>

<MethodEndpoint method={"get"} path={"/audit/data-agreement/{dataAgreementId}"}></MethodEndpoint>



This endpoint is used to fetch a single data agreement for audit purposes, e.g. by an external third party.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Unique ID of an object","in":"path","name":"dataAgreementId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Data agreement (based on ISO 27560) retrieved successfully

</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"}>dataAgreement</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

An agreement contains the specification of a single purpose that can be consented to.  A DataAgreement is universal and can be consented to by *many* individuals through a DataAgreementRecord.


</div><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c8492","description":""}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"1.0.0","description":"The version of this specification to which a receipt conforms"}}></SchemaItem><SchemaItem collapsible={false} name={"controllerId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the controller"}}></SchemaItem><SchemaItem collapsible={false} name={"controllerUrl"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of data controller (may be omitted if no data involved)"}}></SchemaItem><SchemaItem collapsible={false} name={"controllerName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of data controller (may be omitted if no data involved)"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>policy</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"}}>

Policy under which this DataAgreement shall be governed.  When creating a data agreement, the latest policy can be used to fill the default value,  and organisation admin can decide to change it in the data agreement level.


</div><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c7701","description":""}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Default data policy","description":"Name of the policy"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"1.0.0","description":"Version of the policy (it can follow the semver format)"}}></SchemaItem><SchemaItem collapsible={false} name={"url"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"https://example.com/privacy-policy","description":"Permanent URL at which this very version of the Policy can be read, should not be allowed to change over time"}}></SchemaItem><SchemaItem collapsible={false} name={"jurisdiction"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"EU","description":"Jurisdiction"}}></SchemaItem><SchemaItem collapsible={false} name={"industrySector"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Healthcare","description":"Industry sector"}}></SchemaItem><SchemaItem collapsible={false} name={"dataRetentionPeriodDays"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","format":"","example":365,"description":"Data retention period in days"}}></SchemaItem><SchemaItem collapsible={false} name={"geographicRestriction"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"EU","description":"Geographic restriction"}}></SchemaItem><SchemaItem collapsible={false} name={"storageLocation"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"EU","description":"Storage location"}}></SchemaItem><SchemaItem collapsible={false} name={"thirdPartyDataSharing"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":true,"description":"Third party data sharing"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"dataAttributes"} required={false} schemaName={"object[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"allOf":[{"type":"object","description":"Data attributes contain specifications of exactly what is collected.","x-not-in-database":false,"required":["name","description"],"properties":{"id":{"type":"string","format":"","example":"65471222e8c7c3bb3c2c8501","description":"Data attribute ID"},"name":{"type":"string","format":"","example":"Name","description":"Name of the attribute, for instance \"name\" or \"age\""},"description":{"type":"string","format":"","example":"Full name of the individual","description":"Description of the attribute"},"sensitivity":{"type":"boolean","format":"","example":false,"description":"Sensitivity of data attribute"},"category":{"type":"string","format":"","example":"Personal","description":"Category of data attribute"},"scope":{"type":"string","format":"","example":"read","description":"Scope required for data attribute"}}},{"type":"object","properties":{"restrictions":{"type":"array","items":{"type":"object","description":"List of restrictions","x-not-in-database":false,"properties":{"credDefId":{"type":"string","format":"","example":"H3DW1MUWZyBkP5LG4rTYRH:3:CL:80:default","description":"Credential definition ID"},"schemaId":{"type":"string","format":"","example":"H3DW1MUWZyBkP5LG4rTYRH:2:Certificate Of Registration:6.0.0","description":"Schema ID"}}}}}}]},"description":"Data attributes contain specifications of exactly what is collected.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"purpose"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of purpose"}}></SchemaItem><SchemaItem collapsible={false} name={"purposeDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Description of purpose"}}></SchemaItem><SchemaItem collapsible={false} name={"lawfulBasis"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`consent`, `legal_obligation`, `contract`, `vital_interest`, `public_task`, `legitimate_interest`]"} schema={{"type":"string","format":"","example":"","description":"Lawful basis of the agreement - consent / legal_obligation / contract / vital_interest / public_task / legitimate_interest","enum":["consent","legal_obligation","contract","vital_interest","public_task","legitimate_interest"]}}></SchemaItem><SchemaItem collapsible={false} name={"methodOfUse"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`null`, `data_source`, `data_using_service`]"} schema={{"type":"string","format":"","example":"","description":"Method of use - null / data_source / data_using_service","enum":[null,"data_source","data_using_service"]}}></SchemaItem><SchemaItem collapsible={false} name={"dpiaDate"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"","description":"The date on which the DPIA report is generated after a DPIA"}}></SchemaItem><SchemaItem collapsible={false} name={"dpiaSummaryUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The URl providing the DPIA result reports, summary etc that can be verified by any interested parties"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>signature</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Signature of authorising party of DataAgreement (Signatures may be chained in the case of multiple signatures)


</div><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c5501","description":"Objects may be passed back by some API endpoints without an id (PK), denoting that they are a \"draft\", i.e. a Signature that is not yet stored in the database and only exists in transit."}}></SchemaItem><SchemaItem collapsible={false} name={"payload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"The final payload that is signed, constructed as a JSON serialisation of fields {verificationPayload: ..., verificationPayloadHash: ..., verificationMethod: ..., verificationArtifact: ..., verificationSignedBy: ..., verificationJwsHeader, timestamp: ..., signedWithoutObjectReference: ..., objectType: ..., objectReference: ...}. Serialised as a JSON dict. If the signature is generated before anything is stored in the database (and has a PK), then the objectReference should be omitted from the payload but filled in afterwards."}}></SchemaItem><SchemaItem collapsible={false} name={"signature"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"eyJhbGciOiJFZERTQSJ9...","description":"Signature of payload hash, the format of the signature should be specified by either verificationMethod or verificationJwsHeader"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationMethod"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Ed25519Signature2020","description":"A well-known string denoting which method is used. Valid values: TBD. This might be expanded with supported verification methods. There may be a minimal set of supported methods necessary."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"Internally generated serialised version of the data referenced by objectType and objectReference - by extracting and serialising their data as JSON"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayloadHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"a1b2c3d4e5f6...","description":"Internally generated cryptographic hash of the value to be signed, i.e. the value of verificationPayload"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationArtifact"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"","description":"A verification artifact in the form of a scanned object, image, signature etc"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedBy"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"did:key:z6Mkf...","description":"Because an identifier's information may change over time, there is a need to store that information at the time of signing. In the case of a cryptographic signature, this field should contain some identifier for looking up or verifying the public key of the signing party. In the case of a non-cryptographic signature, this field could contain a natural individual's names, personal number, email addresses - store a snapshot that binds to the signature at the time of signing. In the case of a cryptographic signature, this may be the fingerprint of the individual's public key or in some cases, a token from the user's ID session."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedAs"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"individual","description":"DRAFT FIELD: Specifies the relationship between the authorising signature and the invidual which the payload concerns. This is relevant for Consent Records. Possible values: \"individual\" / \"delegate\"."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationJwsHeader"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"","description":"Alternative to the verificationMethod, verificationHash and verificationSignature, give a JWS serialised object (RFC7515)"}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"2024-01-15T10:30:00Z","description":"Timestamp of signature, currently this field isn't part of the payload so it's not tamper-proof"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectReference"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":false,"description":"Indicates that objectReference was left blank in the serialised version that was signed"}}></SchemaItem><SchemaItem collapsible={false} name={"objectType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`revision`, `signature`]"} schema={{"type":"string","format":"","example":"revision","description":"Name of the schema model that objectReference points to. Values: \"signature\" or \"revision\"","enum":["revision","signature"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectReference"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c6601","description":"A symmetric relation / back reference to the objectType that was signed. We are currently just modelling signing another signature (a chain) or signing a Revision (which can be a revision of a consent record, an agreement, policy etc)."}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"active"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":"","description":"DataAgreement is active and new DataAgreementRecords can be created"}}></SchemaItem><SchemaItem collapsible={false} name={"forgettable"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":"","description":"DataAgreementRecord may be deleted when consent is withdrawn, as its existence is not necessary for auditability."}}></SchemaItem><SchemaItem collapsible={false} name={"compatibleWithVersionId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","x-fk-model":"DataAgreement","description":"WIP: This field indicates that Data Agreement Records may be transferred from this  compatible previous revision of the same DataAgreement\n"}}></SchemaItem><SchemaItem collapsible={false} name={"lifecycle"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`draft`, `complete`]"} schema={{"type":"string","description":"WIP: Current Lifecycle state of the DataAgreement.  Lifecycle states are used to manage internal workflows and  should not be assigned semantic meanings for active Data Agreement Records.\n","enum":["draft","complete"]}}></SchemaItem><SchemaItem collapsible={false} name={"dataUsingServices"} required={false} schemaName={"undefined[]"} qualifierMessage={undefined} schema={{"type":"array","items":[{"type":"object","description":"Data using service organisation for the data agreement","x-not-in-database":false,"required":["name","sector","location"],"properties":{"name":{"type":"string","format":"","example":"","description":"Name of the data using service organisation"},"sector":{"type":"string","format":"","example":"","description":"Defines sector of the organisation"},"location":{"type":"string","format":"","example":"","description":"Defines location of the organisation"},"privacyDashboardUrl":{"type":"string","format":"","example":"","description":"Defines privacy dashboard url of the organisation"}}}]}}></SchemaItem><SchemaItem collapsible={false} name={"openApiSpecification"} required={false} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"This field contains OpenAPI specification document describing the API's endpoints, models, and operations."}}></SchemaItem><SchemaItem collapsible={false} name={"dataSources"} required={false} schemaName={"undefined[]"} qualifierMessage={undefined} schema={{"type":"array","items":[{"type":"object","description":"Data source organisation for the data agreement","x-not-in-database":false,"required":["name","sector","location"],"properties":{"name":{"type":"string","format":"","example":"","description":"Name of the data source organisation"},"sector":{"type":"string","format":"","example":"","description":"Defines sector of the organisation"},"location":{"type":"string","format":"","example":"","description":"Defines location of the organisation"},"privacyDashboardUrl":{"type":"string","format":"","example":"","description":"Defines privacy dashboard url of the organisation"}}}]}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"dataAgreement\": {\n    \"id\": \"65471222e8c7c3bb3c2c8492\",\n    \"version\": \"1.0.0\",\n    \"controllerId\": \"string\",\n    \"controllerUrl\": \"string\",\n    \"controllerName\": \"string\",\n    \"policy\": {\n      \"id\": \"65471222e8c7c3bb3c2c7701\",\n      \"name\": \"Default data policy\",\n      \"version\": \"1.0.0\",\n      \"url\": \"https://example.com/privacy-policy\",\n      \"jurisdiction\": \"EU\",\n      \"industrySector\": \"Healthcare\",\n      \"dataRetentionPeriodDays\": 365,\n      \"geographicRestriction\": \"EU\",\n      \"storageLocation\": \"EU\",\n      \"thirdPartyDataSharing\": true\n    },\n    \"dataAttributes\": [\n      {\n        \"id\": \"65471222e8c7c3bb3c2c8501\",\n        \"name\": \"Name\",\n        \"description\": \"Full name of the individual\",\n        \"sensitivity\": false,\n        \"category\": \"Personal\",\n        \"scope\": \"read\",\n        \"restrictions\": [\n          {\n            \"credDefId\": \"H3DW1MUWZyBkP5LG4rTYRH:3:CL:80:default\",\n            \"schemaId\": \"H3DW1MUWZyBkP5LG4rTYRH:2:Certificate Of Registration:6.0.0\"\n          }\n        ]\n      }\n    ],\n    \"purpose\": \"string\",\n    \"purposeDescription\": \"string\",\n    \"lawfulBasis\": \"\",\n    \"methodOfUse\": \"\",\n    \"dpiaDate\": \"\",\n    \"dpiaSummaryUrl\": \"string\",\n    \"signature\": {\n      \"id\": \"65471222e8c7c3bb3c2c5501\",\n      \"payload\": \"{...}\",\n      \"signature\": \"eyJhbGciOiJFZERTQSJ9...\",\n      \"verificationMethod\": \"Ed25519Signature2020\",\n      \"verificationPayload\": \"{...}\",\n      \"verificationPayloadHash\": \"a1b2c3d4e5f6...\",\n      \"verificationArtifact\": \"\",\n      \"verificationSignedBy\": \"did:key:z6Mkf...\",\n      \"verificationSignedAs\": \"individual\",\n      \"verificationJwsHeader\": \"\",\n      \"timestamp\": \"2024-01-15T10:30:00Z\",\n      \"signedWithoutObjectReference\": false,\n      \"objectType\": \"revision\",\n      \"objectReference\": \"65471222e8c7c3bb3c2c6601\"\n    },\n    \"active\": \"\",\n    \"forgettable\": \"\",\n    \"compatibleWithVersionId\": \"string\",\n    \"lifecycle\": \"draft\",\n    \"dataUsingServices\": [\n      null\n    ],\n    \"openApiSpecification\": {},\n    \"dataSources\": [\n      null\n    ]\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

bad input parameter

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

Unauthorized

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal server error

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      