---
id: update-data-disclosure-agreement-template
title: "Update Data Disclosure Agreement Template"
description: "Updates a Data Disclosure Agreement Template. Partial updates are supported.  If publishing (set active=true), purpose,  purpose description, and lawful basis must either be provided or already be present from the draft version.  If changing the Data Agreement, all three fields must be provided (ID,  revision ID, and revision hash)."
sidebar_label: "Update Data Disclosure Agreement Template"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "put 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"}>Update Data Disclosure Agreement Template</h1>

<MethodEndpoint method={"put"} path={"/v3/config/data-disclosure-agreement/{dataDisclosureAgreementTemplateId}"}></MethodEndpoint>



Updates a Data Disclosure Agreement Template. Partial updates are supported.  If publishing (set active=true), purpose,  purpose description, and lawful basis must either be provided or already be present from the draft version.  If changing the Data Agreement, all three fields must be provided (ID,  revision ID, and revision hash).


## 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":"dataDisclosureAgreementTemplateId","in":"path","description":"Unique ID of a Data Disclosure Template","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataDisclosureAgreementTemplate</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"}}>

Fields which can be updated in a Data Disclosure Agreement Template

</div><SchemaItem collapsible={false} name={"language"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ISO 639-1 language code (e.g. 'en' or 'sv')","example":"en"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataController</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

An organisation constituted as a legally defined entity in any jurisdiction

</div><SchemaItem collapsible={false} name={"publicKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Data controller public key"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 50 characters`"} schema={{"type":"string","maxLength":50,"description":"Data controller name"}}></SchemaItem><SchemaItem collapsible={false} name={"legalId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Data controller legal identifier"}}></SchemaItem><SchemaItem collapsible={false} name={"url"} required={true} schemaName={"uri"} qualifierMessage={undefined} schema={{"type":"string","format":"uri","description":"Data controller URL"}}></SchemaItem><SchemaItem collapsible={false} name={"industrySector"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 50 characters`"} schema={{"type":"string","maxLength":50,"description":"Data controller industry sector"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"agreementPeriod"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"integer","minimum":1,"description":"Days for which the agreement is valid","example":365}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataSharingRestrictions</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Restrictions on how the data is shared. OBS! Object should be 'dataSharingRestrictions'


</div><SchemaItem collapsible={false} name={"policyUrl"} required={true} schemaName={"uri"} qualifierMessage={undefined} schema={{"type":"string","format":"uri","description":"Where to find the policy"}}></SchemaItem><SchemaItem collapsible={false} name={"jurisdiction"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Jurisdiction where the data sharing restrictions apply"}}></SchemaItem><SchemaItem collapsible={false} name={"dataRetentionPeriod"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"integer","minimum":1,"description":"How many days the data can be kept"}}></SchemaItem><SchemaItem collapsible={false} name={"geographicRestriction"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Where the data can be shared to"}}></SchemaItem><SchemaItem collapsible={false} name={"storageLocation"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Where the data is stored"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"purpose"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 100 characters`"} schema={{"type":"string","maxLength":100,"description":"Required if active=true, unless present already from the draft version"}}></SchemaItem><SchemaItem collapsible={false} name={"purposeDescription"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 500 characters`"} schema={{"type":"string","maxLength":500,"description":"Required if active=true, unless present already from the draft version"}}></SchemaItem><SchemaItem collapsible={false} name={"lawfulBasis"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`contract`]"} schema={{"type":"string","enum":["contract"],"description":"Required if active=true, unless present already from the draft version"}}></SchemaItem><SchemaItem collapsible={false} name={"codeOfConduct"} required={false} schemaName={"uri"} qualifierMessage={undefined} schema={{"type":"string","format":"uri","description":"URL to code of conduct"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Data Agreement, if included, must provide revision ID and hash"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementRevisionId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Data Agreement Revision, if included, must provide Data Agreement ID and revision hash"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementRevisionHash"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Hash of the connected Data Agreement Revision, if included, must provide Data Agreement ID and revision ID"}}></SchemaItem><SchemaItem collapsible={false} name={"presentationDefinitionId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Presentation Definition"}}></SchemaItem><SchemaItem collapsible={false} name={"active"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Publish if true"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Data Disclosure Agreement Template updated

</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"}>dataDisclosureAgreementTemplate</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 template outlines an agreement between a Data Source and  Data Using Service that can be signed by both.


</div><SchemaItem collapsible={false} name={"context"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"string"},"description":"Array of URIs of JSON-LD contexts"}}></SchemaItem><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique Data Disclosure Agreement Template identifier"}}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"string"},"example":["DataDisclosureAgreement"],"description":"The Data Disclosure Agreement type from context"}}></SchemaItem><SchemaItem collapsible={false} name={"language"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ISO 639-1 language code (e.g. 'en' or 'sv')"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The version of this Data Disclosure Agreement Template"}}></SchemaItem><SchemaItem collapsible={false} name={"templateId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique Data Disclosure Agreement Template identifier (derived from 'id')"}}></SchemaItem><SchemaItem collapsible={false} name={"templateVersion"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The version of this Data Disclosure Agreement Template (derived from 'version')"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataController</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"}}>

An organisation constituted as a legally defined entity in any jurisdiction

</div><SchemaItem collapsible={false} name={"publicKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Data controller public key"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 50 characters`"} schema={{"type":"string","maxLength":50,"description":"Data controller name"}}></SchemaItem><SchemaItem collapsible={false} name={"legalId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Data controller legal identifier"}}></SchemaItem><SchemaItem collapsible={false} name={"url"} required={true} schemaName={"uri"} qualifierMessage={undefined} schema={{"type":"string","format":"uri","description":"Data controller URL"}}></SchemaItem><SchemaItem collapsible={false} name={"industrySector"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 50 characters`"} schema={{"type":"string","maxLength":50,"description":"Data controller industry sector"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"agreementPeriod"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Days for which agreement is valid"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataSharingRestrictions</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"}}>

Restrictions on how the data is shared. OBS! Object should be 'dataSharingRestrictions'


</div><SchemaItem collapsible={false} name={"policyUrl"} required={true} schemaName={"uri"} qualifierMessage={undefined} schema={{"type":"string","format":"uri","description":"Where to find the policy"}}></SchemaItem><SchemaItem collapsible={false} name={"jurisdiction"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Jurisdiction where the data sharing restrictions apply"}}></SchemaItem><SchemaItem collapsible={false} name={"dataRetentionPeriod"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"integer","minimum":1,"description":"How many days the data can be kept"}}></SchemaItem><SchemaItem collapsible={false} name={"geographicRestriction"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Where the data can be shared to"}}></SchemaItem><SchemaItem collapsible={false} name={"storageLocation"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Where the data is stored"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"purpose"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Purpose of the Data Disclosure Agreement"}}></SchemaItem><SchemaItem collapsible={false} name={"purposeDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Description of the Data Disclosure Agreement"}}></SchemaItem><SchemaItem collapsible={false} name={"lawfulBasis"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`contract`]"} schema={{"type":"string","enum":["contract"],"description":"Lawful basis for the Data Disclosure Agreement"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataAttributes</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"}}><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c8501","description":"Data attribute ID"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Name","description":"Name of the attribute, for instance \"name\" or \"age\""}}></SchemaItem><SchemaItem collapsible={false} name={"description"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Full name of the individual","description":"Description of the attribute"}}></SchemaItem><SchemaItem collapsible={false} name={"sensitivity"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":false,"description":"Sensitivity of data attribute"}}></SchemaItem><SchemaItem collapsible={false} name={"category"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Personal","description":"Category of data attribute"}}></SchemaItem><SchemaItem collapsible={false} name={"scope"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"read","description":"Scope required for data attribute"}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem><SchemaItem collapsible={false} name={"codeOfConduct"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL to code of conduct"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Data Agreement"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementRevisionId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Data Agreement Revision"}}></SchemaItem><SchemaItem collapsible={false} name={"dataAgreementRevisionHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Hash of the connected Data Agreement Revision"}}></SchemaItem><SchemaItem collapsible={false} name={"active"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Whether the Data Disclosure Agreement is published or not"}}></SchemaItem><SchemaItem collapsible={false} name={"presentationDefinitionId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the connected Presentation Definition"}}></SchemaItem><SchemaItem collapsible={false} name={"openApiSpecification"} required={false} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"OpenAPI specification of the Data Agreement, defining available APIs for Data Using Services"}}></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  \"dataDisclosureAgreementTemplate\": {\n    \"context\": [\n      \"string\"\n    ],\n    \"id\": \"string\",\n    \"type\": [\n      \"DataDisclosureAgreement\"\n    ],\n    \"language\": \"string\",\n    \"version\": \"string\",\n    \"templateId\": \"string\",\n    \"templateVersion\": \"string\",\n    \"dataController\": {\n      \"publicKey\": \"string\",\n      \"name\": \"string\",\n      \"legalId\": \"string\",\n      \"url\": \"string\",\n      \"industrySector\": \"string\"\n    },\n    \"agreementPeriod\": 0,\n    \"dataSharingRestrictions\": {\n      \"policyUrl\": \"string\",\n      \"jurisdiction\": \"string\",\n      \"dataRetentionPeriod\": 0,\n      \"geographicRestriction\": \"string\",\n      \"storageLocation\": \"string\"\n    },\n    \"purpose\": \"string\",\n    \"purposeDescription\": \"string\",\n    \"lawfulBasis\": \"contract\",\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      }\n    ],\n    \"codeOfConduct\": \"string\",\n    \"dataAgreementId\": \"string\",\n    \"dataAgreementRevisionId\": \"string\",\n    \"dataAgreementRevisionHash\": \"string\",\n    \"active\": true,\n    \"presentationDefinitionId\": \"string\",\n    \"openApiSpecification\": {}\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>
      