---
id: read-data-disclosure-agreement-record
title: "Read Data Disclosure Agreement Record"
description: "Reads a Data Disclosure Agreement Record."
sidebar_label: "Read Data Disclosure Agreement Record"
hide_title: true
hide_table_of_contents: true
api: eJztW91y2zYWfpUzvIndoWj5L0k9nc46f63TbpOxnc3M1p4EIo9E1CTAAKAV1aO7fZJ9tH2SnXNAihRFR3LTnb2obmwKJICDc77zC+AuSNDGRhZOahWcBOcoEgsCXggn4IW0caZtaRBOJwYxR+XgHGNtkigIg0IYkaNDY4OTX+8CJXIMToJEONF0XPS7xLzIhMNzvJVWanWWBGEgacpCuDQIO3S8U/JTiXD2AvS4h5x6NKiHC8LA4KdSGkyCE2dKDAMbp5iL4OQucLOCKLPOSDUJ5vNwHbF+jV9Hoh/jQXRd08e20MqipfcHwyH9W552nWSARBiEQayVQ+VoAFEUmYwFDbD3m6VR7lpUFEYXaJz0c36RIy2i9eg3jN0KU07BeCoMFgYtKmdBqBaRI3RTRFUz7EKXJkYQKvG/31mpJnCB5lbGCOBS4SAWCkYIVk4UJjCawUi7NISRsJiAVuBShLJIhMMEftBgnSljVxqM4DJFeFO4wZmCW5GVCAnBNZcKLUxTdCka7l3RLC2I2MlbTw9xYjF3Kgwm4DR/vkppz1TSglbZjH7JBMbaVLNYIMkIqag7rYQXJohgG10tA/nXQLIohdJKxiJjRG6oYNWXnsEX9RRVKxNf0d5+pwt3Rj2dzNE6kRfUZiZCScvwYQLaDec6o37SvsAMHSbBddgBlExWoX6PKq2FtkxQOTmWaKJgvsyXtXOQgGKjrR206RdZa1CWUoMHnmNTbvdohpMuQ7apjUQ6yvLNBBUaGX8DpvoIcp1gBrEoGBFMjkUjRSYJ7pVWW7Y5agZejR9ZIIFmCEZPCYvSEv5cigpsyfQQdvd3ITazwumJEUUq4wZ5DPiDXRBlIp1Uk+hKXalTKxOEsdE5U3EV2DKO0VptrgKIdVbmKgTRUG5TXWYJqUusFfUllcl0fIPsLj4PlHYDqQbEUlLe4GQsMos9gPer+oVsdFjx0yOPHwkm9BEa+bvI5O+YXChR2FS7qtU3/ihsugTlDaE51iYXLjgJgjDAzyIvWIiPj4+e7B8cHODT+El8OBodxgfx48fD/RWh1tKGsxeEn9ZSNp6LGLRA2soEb4nhurTZjETCw18FMCqdhy/GKesEGBRWK9sWi8gyTBa9iKgrnlmVOfG+O2+hMxnPKpPRdQXX85ZovoqNT4++PehV17c/EcwJe7rCMLmDqbAtjQjmS7DYmJC7KIrmvbO255LdqbwTei9dqkv3ZnX5I60zFOq+aSvAL096phLyzqzswkHNVF5ohmMHo0yoG5AKeiBPfkyRZOMyE6S6sKwBUTNeLmZkDSx+KlG5bEaQGEuGhFRs7PpU6is5WqsDVg51h6yYsPD64s0vu/QgIJGxi+C0KLIZN8Pz2q7L39lIwwXhFenrAg2cvbx8BeevnsPTJ0+PI4AzV7tUCyLLGDBjiVlia/h4vAN+jrFwYEtvxc6SsMOs9u+aAeST5yt2ZWOuiP3RQXyYHOHx+PGXnlcYR9MQ/X0y37n48XSwv0t0NeZtY5IOhgdHg+H+YP/4cn94cjg8GQ7/uaoJ9bhEA2OstvOEsVQUBSpMImJ+Y2DOLt7A08fDfXh3+ZzEjUDkEZmidKk2tIhnM8L7rUzK2m+vaoN/SxY07AbJy0O9oRDuQfbn6PhoXxzgY3xy/Pjb4XC4f3QsRsNhD27HaFDFSI5TKBBJLhWUliNG4SAVFmKDHHQ68rc1exgstaP0pH0ejG8G7NeXo4EvByxn4+WByRgpDZlWkypspQDEusUHIRgimgiWzsKCCKKoMJig//kw/G6G3vhwFUAiL9AMDFppKWQBYZwci9j5iKKovFgVa4UQ60Ji4l92lG2Z/iZe3XgRbVKjKPpKWmFnipBo9cjBjdJTkN7IdL9iP+VzFm1AabcbzOfz/qh8RQvIETXRWWH0rUx88rNIQPwYUYOjlcCzHdk/IPoqxCzTnEPa1gCL5xcY6wTp9S0aOa4Sy7+jS3W38e1ipJ7WKj5rv7lgdj2b9Taf2k7z66n9EUWCppOw9PjohTYvgshL4ln9o3n9NelLI68mpWDsVlzYKEVZmwPtsM/0I9AUifeZfiG7dYxyr4Isz/j6/WVD9lLfWsprM/7qw2aYsJ3gxpmQuSW7mTSZRMOo1+8vadYeIK0l/RSmmGUD0kBVsQMSVJpjoGkq4xRyHorsJs0fwT84Fef03J7AoxucjaRKpJp8+G3qHnUJefsQsTVj0ZqgEnkrYPWGwGnS5aQkt9JmxD1z32equx7ToVEiy2bA6ST7pOVEL62CCZrUlyecbmoqIcgIo9ZLPYY+Tszv0da1FD7DWJSWssyWajyyIJW315z3ihnEqVATBH1LXkzmGBJNhmspAhR6BlqnDVbheau/cLwA6sZhk5wQACM48wWiWFj0hbp7UuDQe1sOHOuQpgIyWJ1jt06QaX1D4i4LMu/Mlxn9ZldQjjIZEygWEagnBwph3Czq5+SpXc/Jl5KLVhWc2BRcsUf5YNkdXAVETbu9pMrAB+trPSvpXtWtyvGWP+YUr9/grtfOjDHJxbSqaraq5OFSGwe8VIfocqYSz4QLc/D6/UW7IFJlazvnr54/Od4/Xh8TfyHMXbGE93qRvoRvg6SuCSpXc7tOoecWDQd9HQsSgsimYmaBnTcDca3HaOqLTbLM7m8td6hC0MmhfHmqd02FllSZcjr065HWa10FxGRB4gdRk/jBx0qrsPzCx63KQ59A7jWSHTOwbprKHvgyWlXlb9WKO3JpQrv+0uofCfCWK8zbOG8b523jvG2ct43ztnHeNs7bxnnbOO//F+f5bfL14Hj/p54xeCjkKyu5XMVv1Y0b90zrE0mCfsu7s+G/0UQN39q96wI2r3yEVLom3MAOn3tY+vIGsSCjrYvZ7goVfMpgIzqMzrCXkhqpC/HDDkaTKISWddyNHmo1m3MPG1iKcQcHie8aeUyZ7UmC7UmC7UmC7UmC7UmC7UmC7UmC7UmC7UmC7UmCL50kmK8WhNvhz5cPcrfizWseKuWEn4OZ5z4yHNS548qBdT5DvmSaugfM512+tMcEP5cPe4+G+zTyxqfV20tEY7R5rhOK7fj5RWvO61X2LMdsTe9mZVI5nHChebG4o+Fw3jN8D2IafjwT5AiL0sHijgRLbIUt71Rjg4K2EDxrjv7CrDlHn3wR3mGsS7XKoGN/P+IvyqC6HEw2jgqpPE2HRxxuxKWRbsZ3dE4L+RPS4zVdgnmGwqA5LV3KLbRqMaHLPPdfMrHEm7wq3QcTZNbQ7ZiTYO/2cC/Waiwne2R7Bk3NZbBIuvfuNr4eNN/z1u/eLvUlnbnP1W7re0jdbYtcVxwKwqA05DhT5wp7sreXYK4HopCRnBihXCR1QGxZHuDCiUkVDPeNYf3r7jDXDeN9yMmwqdm/kL/wDdU1o7Te5apuJ51WtoHxvJrzvz3jyjNZEKpYe9j7myiL8j65k49L43yszC/kpaXrOORtxvIzJjCVLoWPnkb4CDtKO7994YyQGfOgEDHuhkCVk86wJ1B1/G6mS0PsGNzg7PuPnA20gXYXjPjXq9q/0t7Qyto44ACnb1BBIaytyfMjVTRTIrNEBCw4yErPUQd3aEIkkhtdAQtoT6G2HiJm64G5kCRbWxaFNu5vjTwXIpE/NE3LQGhjqLOaRSfY+c+//r3rtzkupphIm/pcBj9XWyLdujhU1aZ6h9hwnFxapHQyGw8s7aGgnNQbLm5WF9vFKKMLL8jNIrMh50cT6UQGU0rfHU9mNe2VFTrx+b7O9ESiDQGVGLHMaUNmChneYkaAIivHplCMZCbdjAcRpdO5zxljnReZFFz7JoHx8gxOOKekIoKku1/jknaxuEbEdOZCKbrUEwaZjFFZtqu1FhQiThEOouEKz6fTaST4daTNZK/qa/d+Pnv+8peLlwPqM2/KZ40cSHcSHZdkR2rtqirxVVoTHUb7HC5q63KhWvTQ/bq1xfguolte6kF3LCvUOvzs9opMSA6tmAl3ld39Nbg99Nf9xnJSVVh6bW8QBicPuZxp6oXc12txS/I6DFJtHdFyd0f1uHcmm8+p+VOJht1NGNwKw5j0Nlpaek766xhtZu2cV057F/7AndBe9tW2V/H5A7KUPsq/IdP8gPur7Cv+BwtZIOjPo34hqvn1ItZnQfheZG4L1xpvNaBvu/0fXpLFFpU5b1zZDbuy6oFG76W169U8CfSXGNrb5TvS159w9v3ic//m3g4LP+C/Js5RmvNfT/pr6Q==
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</h1>

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



Reads a Data Disclosure Agreement Record.

## 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></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Data Disclosure Agreement Record 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>
      