---
id: read-data-disclosure-agreement-record-revision
title: "Read Data Disclosure Agreement Record Revision"
description: "Reads a Data Disclosure Agreement Record Revision."
sidebar_label: "Read Data Disclosure Agreement Record Revision"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/datamarketplace-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 Data Disclosure Agreement Record Revision</h1>

<MethodEndpoint method={"get"} path={"/v3/config/data-disclosure-agreement/{dataDisclosureAgreementTemplateRevisionId}/record/{dataDisclosureAgreementRecordId}/revision/{dataDisclosureAgreementRecordRevisionId}"}></MethodEndpoint>



Reads a Data Disclosure Agreement Record Revision.

## 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={{"name":"dataDisclosureAgreementTemplateRevisionId","in":"path","description":"Unique ID of a Data Disclosure Template Revision","required":true,"schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"dataDisclosureAgreementRecordId","in":"path","description":"Unique ID of a Data Disclosure Record","required":true,"schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"dataDisclosureAgreementRecordRevisionId","in":"path","description":"Unique ID of a Data Disclosure Record Revision","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Data Disclosure Agreement Record Revision Read

</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"}}><li className={"schemaItem"}><summary style={{}}><strong>Content-Type</strong><span style={{"opacity":"0.6"}}> json</span></summary><div><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Content-Type header

</div></div></li></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"}>dataDisclosureAgreementRecord</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"}}>

A record represents an Agreement between a Data Source and Data Using Service  that can be signed by both, based on the updated Go structure. The Opt-In value determines whether the record is active and data can be shared to the Data Using Service. The Opt-In value is only valid for records containing both signatures.


</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique Data Disclosure Agreement Record identifier."}}></SchemaItem><SchemaItem collapsible={false} name={"canonicalId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The cross-organisational identifier for the record."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataDisclosureAgreementTemplateRevision</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"}}>

A *generic* revision model captures the serialised contents of any schema's single row. This is then subject to 1) cryptographic signature and 2) auditing.

Aside from the "successor" column, a revision should be considered locked.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c6601","description":"Revision ID"}}></SchemaItem><SchemaItem collapsible={false} name={"schemaName"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`dataAgreement`, `policy`, `dataAgreementRecord`]"} schema={{"type":"string","format":"","example":"dataAgreement","description":"Previously \"schema\" but for technical reasons should be called \"schemaName\"","enum":["dataAgreement","policy","dataAgreementRecord"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c8492","description":"The PK of the object that was serialised"}}></SchemaItem><SchemaItem collapsible={false} name={"objectData"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"The object that is serialised"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectId"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":false,"description":"Indicates that objectId was left blank in serizalizedSnapshot when calculating serializedHash. objectId may subsequently be filled in."}}></SchemaItem><SchemaItem collapsible={false} name={"serizalizedSnapshot"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"Revisioned data (sed as JSON) as a dict. Apply JSON Canonicalization Scheme as per IETF RFC 8785.  It contains all the fields of the schema except sucessorId, serializedHash, serializedSnapshot.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"serializedHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","description":"Hash of serizalizedSnapshot (SHA-1)"}}></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 when revisioning happened. It should be ISO 8601 UTC date time"}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByIndividualId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"description":"Individual ID","type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByOtherId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"64541a2e6e7569000145ab00","description":"Reference to an admin user that has created this revision"}}></SchemaItem><SchemaItem collapsible={false} name={"successorId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"x-fk-model":"Revision","type":"string","description":"If this revision is no longer the latest revision, refer to its successor"}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorHash"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3","description":"Tamper-resistent artifact from previous record, copied from serializedHash"}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorSignature"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"c3d4e5f6a1b2...","description":"Tamper-resistent artifact from previous record (we don't know if the previous record was signed or not)"}}></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"}>dataSourceSignature</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 signature provided by the Data Source.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique signature identifier"}}></SchemaItem><SchemaItem collapsible={false} name={"payload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The Data Disclosure Agreement Record (as a stringified JSON object)"}}></SchemaItem><SchemaItem collapsible={false} name={"signature"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"JWT signature"}}></SchemaItem><SchemaItem collapsible={false} name={"signatureDecoded"} required={true} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"Decoded signature, containing claims used from the signature JWT"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationMethod"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A well-known string denoting which method is used. Valid values: 'keybinding_jwt'"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The keybinding JWT payload that was signed to produce the signature"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayloadHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Internally generated cryptographic hash of the value to be signed, i.e. the value of verificationPayload"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedBy"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","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."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedAs"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`data_source`, `data_using_service`]"} schema={{"type":"string","description":"Either signed as a \"data_source\" or as a \"data_using_service\"","enum":["data_source","data_using_service"]}}></SchemaItem><SchemaItem collapsible={false} name={"verificationJwsHeader"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","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","description":"Timestamp of signature"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectReference"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates that objectReference was left blank in the serialised version that was signed, always false for Data Disclosure Agreement Record signatures"}}></SchemaItem><SchemaItem collapsible={false} name={"objectType"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`data_disclosure_agreement_record`]"} schema={{"type":"string","description":"Name of the schema model that objectReference points to, in this case \"data_disclosure_agreement_record\"","enum":["data_disclosure_agreement_record"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectReference"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"In the case of a data_disclosure_agreement_record, this is the ID of the record that was signed"}}></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"}>dataUsingServiceSignature</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 signature provided by the Data Using Service.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique signature identifier"}}></SchemaItem><SchemaItem collapsible={false} name={"payload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The Data Disclosure Agreement Record (as a stringified JSON object)"}}></SchemaItem><SchemaItem collapsible={false} name={"signature"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"JWT signature"}}></SchemaItem><SchemaItem collapsible={false} name={"signatureDecoded"} required={true} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"Decoded signature, containing claims used from the signature JWT"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationMethod"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A well-known string denoting which method is used. Valid values: 'keybinding_jwt'"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The keybinding JWT payload that was signed to produce the signature"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayloadHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Internally generated cryptographic hash of the value to be signed, i.e. the value of verificationPayload"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedBy"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","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."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedAs"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`data_source`, `data_using_service`]"} schema={{"type":"string","description":"Either signed as a \"data_source\" or as a \"data_using_service\"","enum":["data_source","data_using_service"]}}></SchemaItem><SchemaItem collapsible={false} name={"verificationJwsHeader"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","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","description":"Timestamp of signature"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectReference"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates that objectReference was left blank in the serialised version that was signed, always false for Data Disclosure Agreement Record signatures"}}></SchemaItem><SchemaItem collapsible={false} name={"objectType"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`data_disclosure_agreement_record`]"} schema={{"type":"string","description":"Name of the schema model that objectReference points to, in this case \"data_disclosure_agreement_record\"","enum":["data_disclosure_agreement_record"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectReference"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"In the case of a data_disclosure_agreement_record, this is the ID of the record that was signed"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"optIn"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Whether the record is active and data can be shared to the Data Using Service."}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The timestamp of when the latest signature was added."}}></SchemaItem><SchemaItem collapsible={false} name={"organisationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the organisation this record belongs to (both organisation keep a copy)."}}></SchemaItem><SchemaItem collapsible={false} name={"organisationRole"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`data_source`, `data_using_service`]"} schema={{"type":"string","description":"The role of the organisation in this agreement (e.g., data_source).","enum":["data_source","data_using_service"]}}></SchemaItem><SchemaItem collapsible={false} name={"isDeleted"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"If the record is deleted."}}></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"}>revision</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"}}>

A *generic* revision model captures the serialised contents of any schema's single row. This is then subject to 1) cryptographic signature and 2) auditing.

Aside from the "successor" column, a revision should be considered locked.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c6601","description":"Revision ID"}}></SchemaItem><SchemaItem collapsible={false} name={"schemaName"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`dataAgreement`, `policy`, `dataAgreementRecord`]"} schema={{"type":"string","format":"","example":"dataAgreement","description":"Previously \"schema\" but for technical reasons should be called \"schemaName\"","enum":["dataAgreement","policy","dataAgreementRecord"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c8492","description":"The PK of the object that was serialised"}}></SchemaItem><SchemaItem collapsible={false} name={"objectData"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"The object that is serialised"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectId"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":false,"description":"Indicates that objectId was left blank in serizalizedSnapshot when calculating serializedHash. objectId may subsequently be filled in."}}></SchemaItem><SchemaItem collapsible={false} name={"serizalizedSnapshot"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"Revisioned data (sed as JSON) as a dict. Apply JSON Canonicalization Scheme as per IETF RFC 8785.  It contains all the fields of the schema except sucessorId, serializedHash, serializedSnapshot.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"serializedHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","description":"Hash of serizalizedSnapshot (SHA-1)"}}></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 when revisioning happened. It should be ISO 8601 UTC date time"}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByIndividualId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"description":"Individual ID","type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByOtherId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"64541a2e6e7569000145ab00","description":"Reference to an admin user that has created this revision"}}></SchemaItem><SchemaItem collapsible={false} name={"successorId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"x-fk-model":"Revision","type":"string","description":"If this revision is no longer the latest revision, refer to its successor"}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorHash"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3","description":"Tamper-resistent artifact from previous record, copied from serializedHash"}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorSignature"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"c3d4e5f6a1b2...","description":"Tamper-resistent artifact from previous record (we don't know if the previous record was signed or not)"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"dataDisclosureAgreementRecord\": {\n    \"id\": \"string\",\n    \"canonicalId\": \"string\",\n    \"dataDisclosureAgreementTemplateRevision\": {\n      \"id\": \"65471222e8c7c3bb3c2c6601\",\n      \"schemaName\": \"dataAgreement\",\n      \"objectId\": \"65471222e8c7c3bb3c2c8492\",\n      \"objectData\": \"{...}\",\n      \"signedWithoutObjectId\": false,\n      \"serizalizedSnapshot\": \"{...}\",\n      \"serializedHash\": \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\",\n      \"timestamp\": \"2024-01-15T10:30:00Z\",\n      \"authorizedByIndividualId\": \"string\",\n      \"authorizedByOtherId\": \"64541a2e6e7569000145ab00\",\n      \"successorId\": \"string\",\n      \"predecessorHash\": \"b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3\",\n      \"predecessorSignature\": \"c3d4e5f6a1b2...\"\n    },\n    \"dataSourceSignature\": {\n      \"id\": \"string\",\n      \"payload\": \"string\",\n      \"signature\": \"string\",\n      \"signatureDecoded\": {},\n      \"verificationMethod\": \"string\",\n      \"verificationPayload\": \"string\",\n      \"verificationPayloadHash\": \"string\",\n      \"verificationSignedBy\": \"string\",\n      \"verificationSignedAs\": \"data_source\",\n      \"verificationJwsHeader\": \"string\",\n      \"timestamp\": \"string\",\n      \"signedWithoutObjectReference\": true,\n      \"objectType\": \"data_disclosure_agreement_record\",\n      \"objectReference\": \"string\"\n    },\n    \"dataUsingServiceSignature\": {\n      \"id\": \"string\",\n      \"payload\": \"string\",\n      \"signature\": \"string\",\n      \"signatureDecoded\": {},\n      \"verificationMethod\": \"string\",\n      \"verificationPayload\": \"string\",\n      \"verificationPayloadHash\": \"string\",\n      \"verificationSignedBy\": \"string\",\n      \"verificationSignedAs\": \"data_source\",\n      \"verificationJwsHeader\": \"string\",\n      \"timestamp\": \"string\",\n      \"signedWithoutObjectReference\": true,\n      \"objectType\": \"data_disclosure_agreement_record\",\n      \"objectReference\": \"string\"\n    },\n    \"optIn\": true,\n    \"timestamp\": \"string\",\n    \"organisationId\": \"string\",\n    \"organisationRole\": \"data_source\",\n    \"isDeleted\": true\n  },\n  \"revision\": {\n    \"id\": \"65471222e8c7c3bb3c2c6601\",\n    \"schemaName\": \"dataAgreement\",\n    \"objectId\": \"65471222e8c7c3bb3c2c8492\",\n    \"objectData\": \"{...}\",\n    \"signedWithoutObjectId\": false,\n    \"serizalizedSnapshot\": \"{...}\",\n    \"serializedHash\": \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\",\n    \"timestamp\": \"2024-01-15T10:30:00Z\",\n    \"authorizedByIndividualId\": \"string\",\n    \"authorizedByOtherId\": \"64541a2e6e7569000145ab00\",\n    \"successorId\": \"string\",\n    \"predecessorHash\": \"b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3\",\n    \"predecessorSignature\": \"c3d4e5f6a1b2...\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></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={"404"} value={"404"}><div>

Resource not found

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