openapi: 3.0.3 info: version: 1.2.0 title: Hanko Admin Audit Logs User Metadata Management API description: '## Introduction This is the OpenAPI specification for the [Hanko Admin API](https://github.com/teamhanko/hanko/blob/main/backend/README.md#start-private-api). ## Authentication The Admin API must be protected by an access management system. --- ' contact: email: developers@hanko.io license: name: AGPL-3.0-or-later url: https://www.gnu.org/licenses/agpl-3.0.txt servers: - url: https://{tenant_id}.hanko.io/admin variables: tenant_id: default: '' description: The (UU)ID of a tenant. Replace the default value with your tenant ID. tags: - name: User Metadata Management paths: /users/{id}/metadata: get: summary: Get metadata of a user tags: - User Metadata Management security: - BearerApiKeyAuth: [] operationId: get-user-metadata parameters: - $ref: '#/components/parameters/Id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserMetadata' '204': description: No content (user has no metadata) '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' patch: summary: Patch metadata of a user description: "Updates a users metadata by deep merging the metadata patch from\nthe request with existing metadata.\n\nSet the entire request to `null` to clear all metadata:\nSet any of `public_metadata`, `private_metadata`, `unsafe_metadata` to null to\nclear metadata for that category. \n\nAn empty object (`{}`) for the top level request object or an empty object for\n`public_metadata`, `private_metadata` or the `unsafe_metadata` property represent\na noop patch. \n\nUnknown top level keys besides `public_metadata`, `private_metadata` or `unsafe_metadata`\nare ignored.\n\nAll other top level request values (e.g. an empty string, a non-empty string, an array) result in a bad request.\n" tags: - User Metadata Management security: - BearerApiKeyAuth: [] operationId: patch-user-metadata parameters: - $ref: '#/components/parameters/Id' requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/UserMetadata' - description: The user metadata patch responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserMetadata' '204': description: No content (user has no metadata) '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' components: parameters: Id: name: id in: path description: UUID of the requested object required: true schema: type: string format: uuid schemas: Error: type: object required: - code - message properties: code: type: integer format: int32 message: type: string UserMetadata: description: User metadata type: object properties: public_metadata: type: object additionalProperties: {} example: role: admin private_metadata: type: object additionalProperties: {} example: internal_id: e6c19cfb-09a2-41e5-a908-e33193b7ca0a unsafe_metadata: type: object additionalProperties: {} example: birthday: '2025-05-12' responses: BadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 400 message: Bad Request NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 404 message: Not found InternalServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 500 message: Internal Server Error securitySchemes: BearerApiKeyAuth: description: Bearer authentication header of the form `Bearer `, where `` is your API key. Must only be used when using Hanko Cloud. type: http scheme: bearer bearerFormat: API Key externalDocs: description: More about Hanko url: https://github.com/teamhanko/hanko