---
id: delete-data-disclosure-agreement-record
title: "Delete data disclosure agreement record"
description: "Deletes the copy of a data disclosure agreement record in your organisation. The record is then not in the record lists and reads, a pull data request and an access token check under it fail, and its revisions stay readable with `GET .../record/{dataDisclosureAgreementRecordId}/revision/{dataDisclosureAgreementRecordRevisionId}`. The copy of the other party does not change, and the service tells nobody about the delete."
sidebar_label: "Delete data disclosure agreement record"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "delete 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"}>Delete data disclosure agreement record</h1>

<MethodEndpoint method={"delete"} path={"/v4/config/consent/data-disclosure-agreement/{dataDisclosureAgreementTemplateRevisionId}/record/{dataDisclosureAgreementRecordId}"}></MethodEndpoint>



Deletes the copy of a data disclosure agreement record in your organisation. The record is then not in the record lists and reads, a pull data request and an access token check under it fail, and its revisions stay readable with `GET .../record/{dataDisclosureAgreementRecordId}/revision/{dataDisclosureAgreementRecordRevisionId}`. The copy of the other party does not change, and the service tells nobody about the delete.

The record `id` alone selects the record: the service does not check the template revision ID in the path.

Errors: `404` when the record does not exist or is already deleted.


## 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","required":true,"description":"ID of the template revision of the record (`dataDisclosureAgreementTemplateRevision.id`). The service does not check it.","schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"dataDisclosureAgreementRecordId","in":"path","description":"ID of the data disclosure agreement record (`id`).","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The latest revision of the deleted record. The delete makes no new revision.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={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 locked snapshot of a data disclosure agreement template or record. The service makes a revision each time it publishes a template or changes a record. A new revision links to the one before it through `predecessorHash`, and the one before it gets the `successorId` of the new revision.


</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the revision. Empty for a template that is still a draft: a draft has no stored revision.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"schemaName"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`DataDisclosureAgreementTemplate`, `DataDisclosureAgreementRecord`]"} schema={{"type":"string","description":"The kind of object in the revision.","enum":["DataDisclosureAgreementTemplate","DataDisclosureAgreementRecord"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the template or record in the revision."}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectId"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Always `false` for these revisions."}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"When the service made the revision (UTC, ISO 8601)."}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByIndividualId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Empty for these revisions."}}></SchemaItem><SchemaItem collapsible={false} name={"authorizedByOther"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the admin who made the change. For a record, the ID of the organisation.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The `serializedHash` of the revision before this one. Empty for the first revision."}}></SchemaItem><SchemaItem collapsible={false} name={"predecessorSignature"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Empty for these revisions."}}></SchemaItem><SchemaItem collapsible={false} name={"objectData"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The template or record at the time of the revision, as a JSON string."}}></SchemaItem><SchemaItem collapsible={false} name={"successorId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the next revision. Empty for the latest revision."}}></SchemaItem><SchemaItem collapsible={false} name={"serializedHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"SHA-1 hash of `serializedSnapshot`."}}></SchemaItem><SchemaItem collapsible={false} name={"serializedSnapshot"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The JSON of the revision fields that `serializedHash` covers."}}></SchemaItem><SchemaItem collapsible={false} name={"organisationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the organisation that owns the revision."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"revision\": {\n    \"id\": \"string\",\n    \"schemaName\": \"DataDisclosureAgreementTemplate\",\n    \"objectId\": \"string\",\n    \"signedWithoutObjectId\": true,\n    \"timestamp\": \"string\",\n    \"authorizedByIndividualId\": \"string\",\n    \"authorizedByOther\": \"string\",\n    \"predecessorHash\": \"string\",\n    \"predecessorSignature\": \"string\",\n    \"objectData\": \"string\",\n    \"successorId\": \"string\",\n    \"serializedHash\": \"string\",\n    \"serializedSnapshot\": \"string\",\n    \"organisationId\": \"string\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"revision\": {\n    \"id\": \"6af1c0ab2d6fb7b6ac6efd27\",\n    \"schemaName\": \"DataDisclosureAgreementRecord\",\n    \"objectId\": \"6af1c0a12d6fb7b6ac6efd20\",\n    \"signedWithoutObjectId\": false,\n    \"timestamp\": \"2026-11-08T14:20:11Z\",\n    \"authorizedByIndividualId\": \"\",\n    \"authorizedByOther\": \"6ae2bf741c3dadfeb27982ec\",\n    \"predecessorHash\": \"a8138b18a0a66de72ddaa42be8a88bb45a22754d\",\n    \"predecessorSignature\": \"\",\n    \"objectData\": \"{\\\"id\\\":\\\"6af1c0a12d6fb7b6ac6efd20\\\",\\\"canonicalId\\\":\\\"6af1c0a12d6fb7b6ac6efd20\\\",\\\"optIn\\\":true,\\\"timestamp\\\":\\\"2026-11-08T14:20:11Z\\\",\\\"organisationRole\\\":\\\"data_source\\\",...}\",\n    \"successorId\": \"\",\n    \"serializedHash\": \"d36253add1431c9588aa4d38b9fd774e1cfcbdfb\",\n    \"serializedSnapshot\": \"{\\\"schemaName\\\":\\\"DataDisclosureAgreementRecord\\\",\\\"objectId\\\":\\\"6af1c0a12d6fb7b6ac6efd20\\\",\\\"timestamp\\\":\\\"2026-11-08T14:20:11Z\\\",...}\",\n    \"organisationId\": \"6ae2bf741c3dadfeb27982ec\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The API key is missing or not valid.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

The record does not exist.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal server error.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      