---
id: service-create-individual-consent-record-signature
title: "Creates blank signature"
description: "This endpoint is used to create a blank signature object for the consent record for an individual in an organiation defined in the consent building block. Creates and returns a blank Signature object for the consent record."
sidebar_label: "Creates blank signature"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/consent-management-individual-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"}>Creates blank signature</h1>

<MethodEndpoint method={"post"} path={"/service/individual/record/consent-record/{consentRecordId}/signature"}></MethodEndpoint>



This endpoint is used to create a blank signature object for the consent record for an individual in an organiation defined in the consent building block. Creates and returns a blank Signature object for the consent 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={{"description":"Unique ID of an object","in":"path","name":"consentRecordId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"in":"header","name":"X-ConsentBB-IndividualId","required":true,"schema":{"type":"string"},"description":"Individual ID"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Consent record signature created successfully

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>signature</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

A generic signature contains a cryptographic hash of some value,  together with a signature created by some private key in another system.  Required signing methods: Revision object or another Signature object.


</div><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c5501","description":"Objects may be passed back by some API endpoints without an id (PK), denoting that they are a \"draft\", i.e. a Signature that is not yet stored in the database and only exists in transit."}}></SchemaItem><SchemaItem collapsible={false} name={"payload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"The final payload that is signed, constructed as a JSON serialisation of fields {verificationPayload: ..., verificationPayloadHash: ..., verificationMethod: ..., verificationArtifact: ..., verificationSignedBy: ..., verificationJwsHeader, timestamp: ..., signedWithoutObjectReference: ..., objectType: ..., objectReference: ...}. Serialised as a JSON dict. If the signature is generated before anything is stored in the database (and has a PK), then the objectReference should be omitted from the payload but filled in afterwards."}}></SchemaItem><SchemaItem collapsible={false} name={"signature"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"eyJhbGciOiJFZERTQSJ9...","description":"Signature of payload hash, the format of the signature should be specified by either verificationMethod or verificationJwsHeader"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationMethod"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"Ed25519Signature2020","description":"A well-known string denoting which method is used. Valid values: TBD. This might be expanded with supported verification methods. There may be a minimal set of supported methods necessary."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayload"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"{...}","description":"Internally generated serialised version of the data referenced by objectType and objectReference - by extracting and serialising their data as JSON"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationPayloadHash"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"a1b2c3d4e5f6...","description":"Internally generated cryptographic hash of the value to be signed, i.e. the value of verificationPayload"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationArtifact"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"","description":"A verification artifact in the form of a scanned object, image, signature etc"}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedBy"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"did:key:z6Mkf...","description":"Because an identifier's information may change over time, there is a need to store that information at the time of signing. In the case of a cryptographic signature, this field should contain some identifier for looking up or verifying the public key of the signing party. In the case of a non-cryptographic signature, this field could contain a natural individual's names, personal number, email addresses - store a snapshot that binds to the signature at the time of signing. In the case of a cryptographic signature, this may be the fingerprint of the individual's public key or in some cases, a token from the user's ID session."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationSignedAs"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"individual","description":"DRAFT FIELD: Specifies the relationship between the authorising signature and the invidual which the payload concerns. This is relevant for Consent Records. Possible values: \"individual\" / \"delegate\"."}}></SchemaItem><SchemaItem collapsible={false} name={"verificationJwsHeader"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"","description":"Alternative to the verificationMethod, verificationHash and verificationSignature, give a JWS serialised object (RFC7515)"}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"2024-01-15T10:30:00Z","description":"Timestamp of signature, currently this field isn't part of the payload so it's not tamper-proof"}}></SchemaItem><SchemaItem collapsible={false} name={"signedWithoutObjectReference"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","format":"","example":false,"description":"Indicates that objectReference was left blank in the serialised version that was signed"}}></SchemaItem><SchemaItem collapsible={false} name={"objectType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`revision`, `signature`]"} schema={{"type":"string","format":"","example":"revision","description":"Name of the schema model that objectReference points to. Values: \"signature\" or \"revision\"","enum":["revision","signature"]}}></SchemaItem><SchemaItem collapsible={false} name={"objectReference"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","format":"","example":"65471222e8c7c3bb3c2c6601","description":"A symmetric relation / back reference to the objectType that was signed. We are currently just modelling signing another signature (a chain) or signing a Revision (which can be a revision of a consent record, an agreement, policy etc)."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"signature\": {\n    \"id\": \"65471222e8c7c3bb3c2c5501\",\n    \"payload\": \"{...}\",\n    \"signature\": \"eyJhbGciOiJFZERTQSJ9...\",\n    \"verificationMethod\": \"Ed25519Signature2020\",\n    \"verificationPayload\": \"{...}\",\n    \"verificationPayloadHash\": \"a1b2c3d4e5f6...\",\n    \"verificationArtifact\": \"\",\n    \"verificationSignedBy\": \"did:key:z6Mkf...\",\n    \"verificationSignedAs\": \"individual\",\n    \"verificationJwsHeader\": \"\",\n    \"timestamp\": \"2024-01-15T10:30:00Z\",\n    \"signedWithoutObjectReference\": false,\n    \"objectType\": \"revision\",\n    \"objectReference\": \"65471222e8c7c3bb3c2c6601\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

bad input parameter

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"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>
      