# Profiles

## Returns the authenticated user's account info.

> Returns account information for the \*\*currently authenticated user\*\* (Bearer token). The \`username\` path segment is \*\*not\*\* used to choose whose profile is returned; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. For users with the Standard Registry role the response also includes address book and VC document information.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ProfileDTO":{"type":"object","properties":{"username":{"type":"string"},"role":{"type":"string","enum":["STANDARD_REGISTRY","USER","AUDITOR"]},"permissionsGroup":{"type":"array","items":{"type":"string"}},"permissions":{"type":"array","items":{"type":"string"}},"did":{"type":"string"},"parent":{"type":"string"},"hederaAccountId":{"type":"string"},"confirmed":{"type":"boolean"},"failed":{"type":"boolean"},"topicId":{"type":"string"},"parentTopicId":{"type":"string"},"location":{"type":"string","enum":["local","remote","custom"],"description":"Whether the user account is local, remote, or custom."},"didDocument":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ProfileDidDocumentRecordDTO"}]},"vcDocument":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ProfileVcDocumentDTO"}]}},"required":["username","role","permissions","didDocument","vcDocument"]},"ProfileDidDocumentRecordDTO":{"type":"object","properties":{"createDate":{"type":"string"},"updateDate":{"type":"string"},"did":{"type":"string"},"document":{"$ref":"#/components/schemas/DidDocumentDTO"},"status":{"type":"string"},"messageId":{"type":"string"},"topicId":{"type":"string"},"verificationMethods":{"type":"object","additionalProperties":{"type":"string"}},"id":{"type":"string"}},"required":["createDate","updateDate","did","document","status","messageId","topicId","verificationMethods","id"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"ProfileVcDocumentDTO":{"type":"object","properties":{"id":{"type":"string"},"policyId":{"type":"string"},"hash":{"type":"string"},"signature":{"type":"number"},"status":{"type":"string","enum":["NEW","ISSUE","REVOKE","SUSPEND","RESUME","FAILED"]},"tag":{"type":"string"},"type":{"type":"string"},"createDate":{"type":"string"},"updateDate":{"type":"string"},"owner":{"type":"string"},"hederaStatus":{"type":"string"},"option":{"type":"object","additionalProperties":true},"topicId":{"type":"string"},"messageId":{"type":"string"},"document":{"$ref":"#/components/schemas/VcDTO"},"documentFileId":{"type":"string"},"tableFileIds":{"type":"array","items":{"type":"string"}}}},"VcDTO":{"type":"object","properties":{"id":{"type":"string","nullable":true},"@context":{"type":"array","items":{"type":"string"}},"type":{"type":"array","items":{"type":"string"}},"credentialSubject":{"additionalProperties":true,"type":"array","items":{"type":"object"}},"issuer":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":true}]},"issuanceDate":{"type":"string"},"proof":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ProofDTO"}]}},"required":["id","@context","type","credentialSubject","issuer","issuanceDate","proof"]},"ProofDTO":{"type":"object","properties":{"type":{"type":"string"},"created":{"type":"string"},"verificationMethod":{"type":"string"},"proofPurpose":{"type":"string"},"jws":{"type":"string"}},"required":["type","created","verificationMethod","proofPurpose","jws"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/{username}":{"get":{"description":"Returns account information for the **currently authenticated user** (Bearer token). The `username` path segment is **not** used to choose whose profile is returned; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. For users with the Standard Registry role the response also includes address book and VC document information.","operationId":"ProfileApi_getProfile","parameters":[{"name":"username","required":true,"in":"path","description":"Present for URL compatibility with existing clients. The server does not use this value when resolving the resource—the response is always the profile of the user identified by the Bearer token.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Returns the authenticated user's account info.","tags":["profiles"]}}}}
```

## Sets Hedera credentials for the authenticated user.

> Applies to the \*\*currently authenticated user\*\* (Bearer token). The \`username\` path segment is \*\*not\*\* used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Sets Hedera credentials and related DID/VC data. For users with the Standard Registry role it also creates an address book.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CredentialsDTO":{"type":"object","properties":{"entity":{"type":"string","description":"Schema entity label; often inferred from the user role when omitted."},"topicId":{"type":"string","description":"Hedera topic id (e.g. restore / profile flows)."},"hederaAccountId":{"type":"string","nullable":false},"hederaAccountKey":{"type":"string","nullable":true,"description":"Hedera private key (local signing). May be omitted for some remote flows."},"parent":{"type":"string","nullable":true},"vcDocument":{"nullable":true,"description":"VC credential subject fields (e.g. OrganizationName, Website, Tags) for Standard Registry.","type":"object","allOf":[{"$ref":"#/components/schemas/SubjectDTO"}]},"didDocument":{"nullable":true,"description":"DID document to publish, or null to skip in this request.","type":"object","allOf":[{"$ref":"#/components/schemas/DidDocumentDTO"}]},"didKeys":{"nullable":true,"type":"array","items":{"$ref":"#/components/schemas/DidKeyDTO"}},"useFireblocksSigning":{"type":"boolean"},"fireblocksConfig":{"$ref":"#/components/schemas/FireblocksConfigDTO"}},"required":["hederaAccountId"]},"SubjectDTO":{"type":"object","properties":{"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"id":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["@context"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidKeyDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false}},"required":["id","key"]},"FireblocksConfigDTO":{"type":"object","properties":{"fireBlocksVaultId":{"type":"string"},"fireBlocksAssetId":{"type":"string"},"fireBlocksApiKey":{"type":"string"},"fireBlocksPrivateiKey":{"type":"string","description":"API property name is `fireBlocksPrivateiKey` (typo preserved for compatibility)."}}},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/{username}":{"put":{"description":"Applies to the **currently authenticated user** (Bearer token). The `username` path segment is **not** used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Sets Hedera credentials and related DID/VC data. For users with the Standard Registry role it also creates an address book.","operationId":"ProfileApi_setUserProfile","parameters":[{"name":"username","required":true,"in":"path","description":"Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Hedera account, optional DID/VC payloads, and optional Fireblocks signing options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsDTO"}}}},"responses":{"204":{"description":""},"401":{"description":"Unauthorized request.\n\nUnauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Sets Hedera credentials for the authenticated user.","tags":["profiles"]}}}}
```

## Sets Hedera credentials asynchronously for the authenticated user.

> Applies to the \*\*currently authenticated user\*\* (Bearer token). The \`username\` path segment is \*\*not\*\* used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to connect Hedera credentials, publish DID/VC documents as required, and for Standard Registry users create an address book. Returns immediately with \`202 Accepted\` and a \*\*task\*\* identifier—use the worker-tasks API or your client notifications to track completion or errors.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CredentialsDTO":{"type":"object","properties":{"entity":{"type":"string","description":"Schema entity label; often inferred from the user role when omitted."},"topicId":{"type":"string","description":"Hedera topic id (e.g. restore / profile flows)."},"hederaAccountId":{"type":"string","nullable":false},"hederaAccountKey":{"type":"string","nullable":true,"description":"Hedera private key (local signing). May be omitted for some remote flows."},"parent":{"type":"string","nullable":true},"vcDocument":{"nullable":true,"description":"VC credential subject fields (e.g. OrganizationName, Website, Tags) for Standard Registry.","type":"object","allOf":[{"$ref":"#/components/schemas/SubjectDTO"}]},"didDocument":{"nullable":true,"description":"DID document to publish, or null to skip in this request.","type":"object","allOf":[{"$ref":"#/components/schemas/DidDocumentDTO"}]},"didKeys":{"nullable":true,"type":"array","items":{"$ref":"#/components/schemas/DidKeyDTO"}},"useFireblocksSigning":{"type":"boolean"},"fireblocksConfig":{"$ref":"#/components/schemas/FireblocksConfigDTO"}},"required":["hederaAccountId"]},"SubjectDTO":{"type":"object","properties":{"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"id":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["@context"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidKeyDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false}},"required":["id","key"]},"FireblocksConfigDTO":{"type":"object","properties":{"fireBlocksVaultId":{"type":"string"},"fireBlocksAssetId":{"type":"string"},"fireBlocksApiKey":{"type":"string"},"fireBlocksPrivateiKey":{"type":"string","description":"API property name is `fireBlocksPrivateiKey` (typo preserved for compatibility)."}}},"TaskDTO":{"type":"object","properties":{"taskId":{"type":"string","description":"Task Id"},"expectation":{"type":"number","description":"Expected count of task phases"},"action":{"type":"string","description":"Task action"},"userId":{"type":"string","description":"User Id"}},"required":["taskId","expectation","action","userId"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/push/{username}":{"put":{"description":"Applies to the **currently authenticated user** (Bearer token). The `username` path segment is **not** used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to connect Hedera credentials, publish DID/VC documents as required, and for Standard Registry users create an address book. Returns immediately with `202 Accepted` and a **task** identifier—use the worker-tasks API or your client notifications to track completion or errors.","operationId":"ProfileApi_setUserProfileAsync","parameters":[{"name":"username","required":true,"in":"path","description":"Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Hedera account, optional DID/VC payloads, and optional Fireblocks signing options. Submission is accepted immediately; processing happens in the background.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsDTO"}}}},"responses":{"202":{"description":"Task accepted for asynchronous processing. Poll or subscribe for task status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Sets Hedera credentials asynchronously for the authenticated user.","tags":["profiles"]}}}}
```

## Returns user's Hedera account balance.

> Requests Hedera account balance.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"UnprocessableEntityErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/{username}/balance":{"get":{"description":"Requests Hedera account balance.","operationId":"ProfileApi_getUserBalance","parameters":[{"name":"username","required":true,"in":"path","description":"The name of the user for whom to fetch the balance.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"422":{"description":"Unprocessable entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Returns user's Hedera account balance.","tags":["profiles"]}}}}
```

## Restore user data (policy, DID documents, VC documents).

> Applies to the \*\*currently authenticated user\*\* (Bearer token). The \`username\` path segment is \*\*not\*\* used to choose whose data is restored; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to restore user data (policy, DID documents, VC documents). Returns immediately with \`202 Accepted\` and a \*\*task\*\* identifier.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CredentialsDTO":{"type":"object","properties":{"entity":{"type":"string","description":"Schema entity label; often inferred from the user role when omitted."},"topicId":{"type":"string","description":"Hedera topic id (e.g. restore / profile flows)."},"hederaAccountId":{"type":"string","nullable":false},"hederaAccountKey":{"type":"string","nullable":true,"description":"Hedera private key (local signing). May be omitted for some remote flows."},"parent":{"type":"string","nullable":true},"vcDocument":{"nullable":true,"description":"VC credential subject fields (e.g. OrganizationName, Website, Tags) for Standard Registry.","type":"object","allOf":[{"$ref":"#/components/schemas/SubjectDTO"}]},"didDocument":{"nullable":true,"description":"DID document to publish, or null to skip in this request.","type":"object","allOf":[{"$ref":"#/components/schemas/DidDocumentDTO"}]},"didKeys":{"nullable":true,"type":"array","items":{"$ref":"#/components/schemas/DidKeyDTO"}},"useFireblocksSigning":{"type":"boolean"},"fireblocksConfig":{"$ref":"#/components/schemas/FireblocksConfigDTO"}},"required":["hederaAccountId"]},"SubjectDTO":{"type":"object","properties":{"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"id":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["@context"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidKeyDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false}},"required":["id","key"]},"FireblocksConfigDTO":{"type":"object","properties":{"fireBlocksVaultId":{"type":"string"},"fireBlocksAssetId":{"type":"string"},"fireBlocksApiKey":{"type":"string"},"fireBlocksPrivateiKey":{"type":"string","description":"API property name is `fireBlocksPrivateiKey` (typo preserved for compatibility)."}}},"TaskDTO":{"type":"object","properties":{"taskId":{"type":"string","description":"Task Id"},"expectation":{"type":"number","description":"Expected count of task phases"},"action":{"type":"string","description":"Task action"},"userId":{"type":"string","description":"User Id"}},"required":["taskId","expectation","action","userId"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/restore/{username}":{"put":{"description":"Applies to the **currently authenticated user** (Bearer token). The `username` path segment is **not** used to choose whose data is restored; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to restore user data (policy, DID documents, VC documents). Returns immediately with `202 Accepted` and a **task** identifier.","operationId":"ProfileApi_restoreUserProfile","parameters":[{"name":"username","required":true,"in":"path","description":"Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Object that contains the Hedera account data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsDTO"}}}},"responses":{"202":{"description":"Successful operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Restore user data (policy, DID documents, VC documents).","tags":["profiles"]}}}}
```

## List of available recovery topics.

> Applies to the \*\*currently authenticated user\*\* (Bearer token). The \`username\` path segment is \*\*not\*\* used to choose whose recovery topics are listed; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to list available recovery topics. Returns immediately with \`202 Accepted\` and a \*\*task\*\* identifier.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CredentialsDTO":{"type":"object","properties":{"entity":{"type":"string","description":"Schema entity label; often inferred from the user role when omitted."},"topicId":{"type":"string","description":"Hedera topic id (e.g. restore / profile flows)."},"hederaAccountId":{"type":"string","nullable":false},"hederaAccountKey":{"type":"string","nullable":true,"description":"Hedera private key (local signing). May be omitted for some remote flows."},"parent":{"type":"string","nullable":true},"vcDocument":{"nullable":true,"description":"VC credential subject fields (e.g. OrganizationName, Website, Tags) for Standard Registry.","type":"object","allOf":[{"$ref":"#/components/schemas/SubjectDTO"}]},"didDocument":{"nullable":true,"description":"DID document to publish, or null to skip in this request.","type":"object","allOf":[{"$ref":"#/components/schemas/DidDocumentDTO"}]},"didKeys":{"nullable":true,"type":"array","items":{"$ref":"#/components/schemas/DidKeyDTO"}},"useFireblocksSigning":{"type":"boolean"},"fireblocksConfig":{"$ref":"#/components/schemas/FireblocksConfigDTO"}},"required":["hederaAccountId"]},"SubjectDTO":{"type":"object","properties":{"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"id":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["@context"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidKeyDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false}},"required":["id","key"]},"FireblocksConfigDTO":{"type":"object","properties":{"fireBlocksVaultId":{"type":"string"},"fireBlocksAssetId":{"type":"string"},"fireBlocksApiKey":{"type":"string"},"fireBlocksPrivateiKey":{"type":"string","description":"API property name is `fireBlocksPrivateiKey` (typo preserved for compatibility)."}}},"TaskDTO":{"type":"object","properties":{"taskId":{"type":"string","description":"Task Id"},"expectation":{"type":"number","description":"Expected count of task phases"},"action":{"type":"string","description":"Task action"},"userId":{"type":"string","description":"User Id"}},"required":["taskId","expectation","action","userId"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/restore/topics/{username}":{"put":{"description":"Applies to the **currently authenticated user** (Bearer token). The `username` path segment is **not** used to choose whose recovery topics are listed; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to list available recovery topics. Returns immediately with `202 Accepted` and a **task** identifier.","operationId":"ProfileApi_restoreTopic","parameters":[{"name":"username","required":true,"in":"path","description":"Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Object that contains the Hedera account data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsDTO"}}}},"responses":{"202":{"description":"Successful operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"List of available recovery topics.","tags":["profiles"]}}}}
```

## Validate DID document format.

> Checks the DID document and returns whether required Hedera verification methods (Ed25519 + BLS) are present. Response includes \`keys\` grouped by verification method type.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidDocumentStatusDTO":{"type":"object","properties":{"valid":{"type":"boolean","nullable":false},"error":{"type":"string","nullable":true,"description":"Error message when `valid` is false; empty string when valid."},"keys":{"type":"object","nullable":false,"description":"Verification methods grouped by key type (e.g. Ed25519VerificationKey2018, Bls12381G2Key2020). Matches runtime `keys` in the guardian response.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/DidVerificationMethodEntryDTO"}}}},"required":["valid","error","keys"]},"DidVerificationMethodEntryDTO":{"type":"object","properties":{"name":{"type":"string","description":"Fragment/name reference (e.g. `#did-root-key`)."},"id":{"type":"string","description":"Full verification method id URI."}},"required":["name","id"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"UnprocessableEntityErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/did-document/validate":{"post":{"description":"Checks the DID document and returns whether required Hedera verification methods (Ed25519 + BLS) are present. Response includes `keys` grouped by verification method type.","operationId":"ProfileApi_validateDidDocument","parameters":[],"requestBody":{"required":true,"description":"DID Document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DidDocumentDTO"}}}},"responses":{"200":{"description":"HTTP 200 for both valid and invalid documents; inspect `valid` and `error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DidDocumentStatusDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"422":{"description":"Unprocessable entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Validate DID document format.","tags":["profiles"]}}}}
```

## Validate DID document keys.

> For each entry in \`keys\`, checks that \`id\` matches a verification method in \`document\` and that \`key\` validates against it. Returns the same array with a \`valid\` flag per entry (HTTP 200 even when some keys fail).

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DidDocumentWithKeyDTO":{"type":"object","properties":{"document":{"nullable":false,"allOf":[{"$ref":"#/components/schemas/DidDocumentDTO"}]},"keys":{"nullable":false,"type":"array","items":{"$ref":"#/components/schemas/DidKeyDTO"}}},"required":["document","keys"]},"DidDocumentDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"@context":{"nullable":true,"type":"array","items":{"type":"string"}},"alsoKnownAs":{"nullable":true,"type":"array","items":{"type":"string"}},"controller":{"nullable":true,"type":"array","items":{"type":"string"}},"verificationMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"authentication":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"assertionMethod":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"keyAgreement":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityInvocation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"capabilityDelegation":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}},"service":{"additionalProperties":true,"nullable":true,"type":"array","items":{"type":"object"}}},"required":["id","@context","alsoKnownAs","controller","verificationMethod","authentication","assertionMethod","keyAgreement","capabilityInvocation","capabilityDelegation","service"]},"DidKeyDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false}},"required":["id","key"]},"DidKeyStatusDTO":{"type":"object","properties":{"id":{"type":"string","nullable":false},"key":{"type":"string","nullable":false},"valid":{"type":"boolean","nullable":false}},"required":["id","key","valid"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"UnprocessableEntityErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/did-keys/validate":{"post":{"description":"For each entry in `keys`, checks that `id` matches a verification method in `document` and that `key` validates against it. Returns the same array with a `valid` flag per entry (HTTP 200 even when some keys fail).","operationId":"ProfileApi_validateDidKeys","parameters":[],"requestBody":{"required":true,"description":"DID document plus `keys`: `{ id, key }` where `id` is the full verification method id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DidDocumentWithKeyDTO"}}}},"responses":{"200":{"description":"Array of results in the same order as request `keys`.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DidKeyStatusDTO"}}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"422":{"description":"Unprocessable entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Validate DID document keys.","tags":["profiles"]}}}}
```

## Returns the list of existing keys.

> Returns the list of existing keys.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"PolicyKeyDTO":{"type":"object","properties":{"id":{"type":"string","description":"Key ID"},"createDate":{"type":"string"},"updateDate":{"type":"string"},"messageId":{"type":"string","description":"Policy Message ID"},"owner":{"type":"string","description":"Key owner"},"policyName":{"type":"string"},"key":{"type":"string","description":"New key"}},"required":["id","createDate","updateDate","messageId","owner","policyName","key"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/keys":{"get":{"description":"Returns the list of existing keys.","operationId":"ProfileApi_getPolicyLabels","parameters":[{"name":"pageIndex","required":false,"in":"query","description":"The number of pages to skip before starting to collect the result set","schema":{"type":"number"}},{"name":"pageSize","required":false,"in":"query","description":"The numbers of items to return","schema":{"type":"number"}}],"responses":{"200":{"description":"Successful operation.","headers":{"X-Total-Count":{"schema":{"type":"integer"},"description":"Total items in the collection."}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyKeyDTO"}}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Returns the list of existing keys.","tags":["profiles"]}}}}
```

## Create or import a policy signing key.

> Registers a \*\*policy message key\*\* for the authenticated user's DID. \*\*Generate:\*\* send only \`messageId\`—the server creates a private key for that policy. The owner can copy the \`messageId\` and returned \`key\` from the response and pass them \*\*out of band\*\* to another person. \*\*Import:\*\* the recipient calls this endpoint with the same \`messageId\` plus the DER-encoded private \`key\` they received, so their account can use the policy like the original owner.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"PolicyKeyConfigDTO":{"type":"object","properties":{"messageId":{"type":"string","description":"Policy Message ID"},"key":{"type":"string","description":"DER-encoded private key when **importing** on the remote user account. Omit when **generating** for user flow (only `messageId`)."}},"required":["messageId","key"]},"PolicyKeyDTO":{"type":"object","properties":{"id":{"type":"string","description":"Key ID"},"createDate":{"type":"string"},"updateDate":{"type":"string"},"messageId":{"type":"string","description":"Policy Message ID"},"owner":{"type":"string","description":"Key owner"},"policyName":{"type":"string"},"key":{"type":"string","description":"New key"}},"required":["id","createDate","updateDate","messageId","owner","policyName","key"]},"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"UnprocessableEntityErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/keys":{"post":{"description":"Registers a **policy message key** for the authenticated user's DID. **Generate:** send only `messageId`—the server creates a private key for that policy. The owner can copy the `messageId` and returned `key` from the response and pass them **out of band** to another person. **Import:** the recipient calls this endpoint with the same `messageId` plus the DER-encoded private `key` they received, so their account can use the policy like the original owner.","operationId":"ProfileApi_generateKey","parameters":[],"requestBody":{"required":true,"description":"`messageId` is always the policy **message id**. `key` is optional: omit it to **generate** a new key; provide it to **import** a key that was shared with you.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyKeyConfigDTO"}}}},"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyKeyDTO"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"422":{"description":"Unprocessable entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Create or import a policy signing key.","tags":["profiles"]}}}}
```

## Deletes the key.

> Deletes the key with the specified ID.

```json
{"openapi":"3.0.0","info":{"title":"Guardian","version":"3.6.0-rc"},"servers":[{"url":"/api/v1","description":"version 1.0"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"UnauthorizedErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}},"required":["statusCode","message"]},"UnprocessableEntityErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorDTO":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/profiles/keys/{id}":{"delete":{"description":"Deletes the key with the specified ID.","operationId":"ProfileApi_deleteKey","parameters":[{"name":"id","required":true,"in":"path","description":"Key Identifier","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"boolean"}}}},"401":{"description":"Unauthorized request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorDTO"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorDTO"}}}},"422":{"description":"Unprocessable entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityErrorDTO"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorDTO"}}}}},"summary":"Deletes the key.","tags":["profiles"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.guardian.hedera.com/api-reference-guardian/profiles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
